并发编程02

7天掌握并发编程

Posted by Zhan on May 24, 2021

并发编程02

​ java线程之间的通信对开发人员透明,内存可见性问题很容易造成困扰,本章起对此进行讲解,涉及内存模型基础、内存模型中顺序一致性、同步原语、内存模型设计;

java内存模型

并发编程模型的两个关键问题

·线程之间如何通信:通信指线程之间以何种机制交换信息,在命令式编程中,线程之间的通信机制有两种,共享内存、消息传递;

​ 在共享内存的并发模型里,线程之间共享程序的公共状态,通过读-写内存中的公共状态进行隐式通信。

​ 在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过发送消息来显示通信;

·线程之间如何同步(此处线程指并发执行的活动实体):同步是指程序中用于控制不同线程间操作发生相对顺序的机制。

​ 在共享内存的并发模型里,同步是显式的,开发者必须显式指定某个方法或某段代码需要在线程间互质执行。

​ 在消息传递的并发模型里,由于消息的发送必须在消息接收之前,所以同步是隐式进行的;

java采用的是共享内存模型,java线程之间通信总是隐式进行,整个通信过程对开发人员是透明的,若多线程开发者不理解隐式进行的线程之间通信的工作机制,会遇见各种奇怪的内存可见性问题。

java内存模型的抽象结构

##