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)