文章转载于 飞天小牛肉 的 《「跬步千里」详解 Java 内存模型与原子性、可见性、有序性》、《JMM 最最最核心的概念:Happens-before 原则》
1. 为什么要学习并发编程对于 “我们为什么要学习并发编程?” 这个问题,就好比 “我们为什么要学习政治?” 一样,也许你平常很少接触到,然后背了一堆 “正确且伟大无比的废话”,最终沦为八股被快速遗忘。
直到我开始去深入了解这块知识而不是盲目背诵的时候,我才明白,它正确且伟大无比,但不是废话。
尽管并发编程的各种底层原理以及其庞大的知识体系容易让人心生畏惧,但是 Java 语言和 Java 虚拟机都提供了相当多的并发工具,替我们隐藏了很多的线程并发细节,使得我们在编码时能更关注业务逻辑,把并发编程的门槛降低了不少。
但是无论语言、中间件和框架再如何先进,我们都不应该完全依赖于它们完成并发处理的所有事情,了解并发的内幕并学习其中的思想,仍然是成为一个高级程序员的必经之路。
我想,上面这段话大概可以回答 “我们为什么要学习并发编程?” 这个问题了。
2. 为什么需要并发编程不知道各位有没有听说过被誉为计算机第一定律的摩尔定律,它是英特尔创始人之一戈登 · 摩尔长期观察总结出来的经验,虽然不是严格推导出来的真理,但最起码迄今为止仍然是令人深信不疑的。其核心内容通俗来说就是 处理器的性能每隔两年就会翻一倍。看起来像个废话