一、Java内存模型中的happen-before是什么
Happen-before关系,是Java内存模型中保证多线程操作可见性的基础。具体表现为:
- 线程内执行的每个操作,都保证happen-before后面的操作。这就保证了基本的程序执行顺序,是开发者在书写程序时的基本约定。
- 对于volatile变量,对于它的写操作,保证happen-before在随后对该变量的读取操作
- 对于一个锁的解锁操作,保证happen-before加锁操作
- 对象构建完成,保证happen-before于finalizer的开始操作
- 甚至是类似线程内部操作的完成,保证happen-before其他Thread.join()的线程等。
二、为什么需要JMM,它试图解决什么问题
三、JMM是如何解决可见性等各种问题的