jvm - (Java内存模型) - 面试宝典
【摘要】 JVM(Java Virtual Machine)是Java虚拟机的缩写,它是Java程序运行的基础。Java内存模型(Java Memory Model,简称JMM)定义了Java程序中多线程并发访问共享变量的规则。 下面是一个简单的示例代码,展示了Java内存模型的一些特性:javaCopy codepublic class JVMExample { private static ...
JVM(Java Virtual Machine)是Java虚拟机的缩写,它是Java程序运行的基础。Java内存模型(Java Memory Model,简称JMM)定义了Java程序中多线程并发访问共享变量的规则。 下面是一个简单的示例代码,展示了Java内存模型的一些特性:
javaCopy codepublic class JVMExample {
private static boolean flag = false;
public static void main(String[] args) throws InterruptedException {
Thread thread1 = new Thread(() -> {
while (!flag) {
// 空循环
}
System.out.println("Thread 1 finished.");
});
Thread thread2 = new Thread(() -> {
flag = true;
System.out.println("Thread 2 finished.");
});
thread1.start();
Thread.sleep(1000); // 等待1秒钟,确保线程1已经开始执行
thread2.start();
thread1.join();
thread2.join();
System.out.println("Main thread finished.");
}
}
这段代码创建了两个线程,一个线程不断地检查flag
的值是否为false
,另一个线程将flag
的值改为true
。如果JVM的内存模型能够正确地工作,那么第一个线程应该能够在第二个线程修改flag
的值后退出循环。 JVM的内存模型确保了线程之间的可见性和有序性。可见性是指一个线程对共享变量的修改对其他线程是可见的,有序性是指程序的执行顺序与代码的顺序一致。 需要注意的是,以上代码只是用来展示Java内存模型的特性,并不是一个合理的线程同步实现。在实际开发中,应该使用volatile
关键字、synchronized
关键字或者java.util.concurrent
包中的锁机制来保证线程之间的同步和正确性。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)