在开始学习并发编程的相关内容之前,了解一些操作系统的基本概念是必需的。从本质上来看,为了充分利用计算机的cpu资源,操作系统将程序的执行抽象成进程和线程,这个操作系统理念上的发展,促使了并发编程的出现。
那么到底进程和线程在操作系统层面是如何实现的,进程间和线程间如何通信,为什么会产生共享变量的数据竞争,甚至硬件怎么支持原子操作,这些不是java语言或者说任何一门语言特有的问题,它是整个底层硬件、操作系统、高级语言结合起来要去解决的问题,所以,暂时放下java中的volatile和synchronized,我们去看一下并发编程更本质的问题和更本质的解决方法。