多年来,Java并发编程一直是一个让开发者头疼不已的问题。无论使用哪种编程模型,线程安全问题总会随时出现。而我们之所以难以掌握多线程并发的真相,很大一部分原因就是因为Java内存模型(JMM)的存在。...这对你理解并控制多线程程序的行为将很有帮助。首先,我们来回顾一下单线程程序中变量值的传播:int x = 0;x = 3; int y = x;在单线程环境中,我们期望的结果是y的值为3。...但是,规则也不能消除所有并发问题。...这也意味着并发编程的难点不在语法层面,而在于我们如何采取必要的同步措施。...在后续文章中,我将通过介绍常见的多线程BUG casos,如死锁,锁投毒,线程不安全等,来帮助大家进一步理解并发编程的难点所在,以及如何利用JMM和同步工具像synchronized,volatile,