欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

jmm和java運(yùn)行時(shí)數(shù)據(jù)區(qū)

JMM(Java Memory Model) 是 Java 平臺(tái)的內(nèi)存模型,它規(guī)定了多線程訪問(wèn)共享數(shù)據(jù)時(shí)的行為,并確保了在不同的 JVM 上的行為一致。

public class JmmExample {
private static int num = 0;
private static boolean flag = false;
public static void main(String[] args) {
new Thread(() -> {
while (!flag) {
Thread.yield();
}
System.out.println(num);
}).start();
num = 1;
flag = true;
}
}

在上述代碼中,由于 num 和 flag 沒(méi)有加同步鎖,所以在多線程的情況下可能出現(xiàn)問(wèn)題。如果 JVM 使用的是弱內(nèi)存模型,那么輸出的結(jié)果可能是 0,在強(qiáng)內(nèi)存模型下結(jié)果一定是 1。

Java 運(yùn)行時(shí)數(shù)據(jù)區(qū)包括線程私有區(qū)和線程共享區(qū)。線程私有區(qū)包括程序計(jì)數(shù)器、Java 虛擬機(jī)棧和本地方法棧;線程共享區(qū)包括堆、方法區(qū)。

public class RuntimeDataAreaExample {
private static String name = "Alice";
public static void main(String[] args) {
String address = "Beijing";
int age = 18;
System.out.println(getInfo());
}
private static String getInfo() {
return "Name: " + name + ", Address: " + address + ", Age: " + age;
}
}

在上述代碼中,name 是一個(gè)靜態(tài)變量,被所有線程共享,存儲(chǔ)在方法區(qū);address 和 age 是在 main 方法中定義的局部變量,存儲(chǔ)在 Java 虛擬機(jī)棧中,只有當(dāng)前線程可以訪問(wèn)。