线程间通信
为什么需要线程通讯
线程是操作系统调度的最小单位,有自己的栈空间,可以按照既定的代码逐步的执行,但是如果每个线程间都孤立的运行,那就会造资源浪费。所以在现实中,我们需要这些线程间可以按照指定的规则共同完成一件任务,所以这些线程之间就需要互相协调,这个过程被称为线程的通信。
线程的通信可以被定义为:
线程通信就是当多个线程共同操作共享的资源时,互相告知自己的状态以避免资源争夺。
线程通信的方式
在并发编程中,需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。
线程通信主要可以分为三种方式,分别为共享内存、消息传递和管道流。每种方式有不同的方法来实现
共享内存:线程之间共享程序的公共状态,线程之间通过读-写内存中的公共状态来隐式通信。
volatile共享内存
ThreadLocal方式
消息传递:线程之间没有公共的状态,线程之间必须通过明确的发送信息来显示的进行通信。
Object的wait/notify等待通知方式
Condition的await/signal等待通知方式
LockSupport的park/unpark等待通知方式
Thread的join方式
…
管道流
管道输入/输出流的形式
还没有评论,来说两句吧...