理解Java内存模型:常见问题与案例
Java内存模型(JMM)是Java语言规范的一部分,它定义了所有Java虚拟机(JVM)共享的、无状态的抽象硬件。以下是一些关于JMM的常见问题以及案例:
引用:
- 什么是引用?
- 示例:
int a = 5; String s = "Hello";
这里a和s都是对内存中对象的引用。
可见性(Visibility):
- 什么是可见性?
- 示例:
public class Test { private int num; public void setNum(int num) { this.num = num; } public int getNum() { return num; } }
在多线程环境下,setNum和getNum的方法可能具有不同的可见性。
有序性(Ordering):
- 什么是有序性?
- 示例:
public class Test { private final Object lock = new Object(); public void test() { synchronized (lock) { System.out.println("Thread 1: Before acquire"); // 这里执行一些逻辑 Thread.sleep(500); // 等待一段时间 System.out.println("Thread 1: After acquire"); } } }
在多线程环境下,如果多个线程同时访问一个临界资源(如lock对象),那么它们的执行顺序可能会变得不确定。
了解和理解JMM是深入Java虚拟机工作的重要基础。
还没有评论,来说两句吧...