并发编程两大问题:线程之间如何通信和线程之间的同步线程之间如何通信需要解决可见性,即线程1的操作1对线程2的操作2是可见的,因此jmm诞生了,通过happens-before,程序员可以写出需要线程可见性的代码,解决了线程之间如何通信的问题