线程通信方式

概念

一般来说,多线程执行任务,可能是独立互不相关的,也有可能是相互之间需要协作完成的,如果多个线程之间需要协作完成任务,必然涉及到线程之间通信,研究线程通信是一项比较复杂的问题,我们有必要了解一些通信方式和一些解决办法,帮助我们写出高效率的多线程程序。

现状

目前线程之间通信方式,有基于共享变量的,有基于线程顺序控制的,有基于协程的

不要通过共享内存来通信,要通过通信来共享内存”,这句话是GO社区中非常经典的一句话,目前在Rust语言中也同样被引入使用,但是基于Java的语言更多的是基于内存共享和线程的顺序控制执行来实现线程之间通信。

实现方式

Java中有很多种具体的实现方式,本次在这里分类总结,具体对应分类下有很多大同小异,思想一致的办法

共享变量

volatile关键字,通过使用可见性变量,可以在线程间很自由的通信

线程顺序控制

使用线程join()方法,可等待加入的线程,直到运行,不过这种不是很灵活

使用synchronized同步,以及对象的wait(), notify()方法,通过共享变量的条件,去调用等待和唤醒同步中的线程,完成协作任务

管道流

管道流(pipeStream)是一种特殊的流,用于在不同线程间直接传送数据。一个线程发送数据到输出管道,另一个线程从输人管道中读数据。通过使用管道,实现不同线程间的通信,而无须借助于类似临时文件之类的东西

 Vimium介绍与快捷键操作
JVM线程调度机制 
上一篇:Vimium介绍与快捷键操作
下一篇: JVM线程调度机制
评论

如果我的文章对你有帮助,或许可以打赏一下呀!

支付宝
微信
QQ