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包中的锁机制来保证线程之间的同步和正确性。