国内最专业的IT技术学习网

UI设计

当前位置:主页 > UI设计 >

并发编程中的线程间通信

发布时间:2019/09/16标签:   线程    点击量:

原标题:并发编程中的线程间通信
线程通讯的目的是使线程间可能相互发送信号。另一方面,线程通讯使线程可能等候其余线程的信号。线程通讯罕用的方法有: wait/notify 等候 Volatile 内存同享 CountDownLatch 并发东西 应用 ReentrantLock 联合 Condition 基础LockSupport完成线程间的堵塞和叫醒方法一:应用 volatile 要害字基于 volatile 要害字来完成线程间彼此通讯是应用同享内存的思维,大抵意义就是多个线程同时监听一个变量,当这个变量产生变更的时间 ,线程可能感知并履行响应的营业。这也是最简略的一种完成方法

并发编程中的线程间通信
运转成果为:
并发编程中的线程间通信
方法二:应用Object类的wait() 和 notify() 方式众所周知,Object类供给了线程间通讯的方式:wait()、notify()、notifyaAl(),它们是多线程通讯的基本,而这类完成方法的思维天然是线程间通讯。留神: wait和 notify必需共同synchronized应用,wait方式开释锁,notify方式不开释锁
并发编程中的线程间通信
运转成果为
并发编程中的线程间通信
由打印成果截图可知,在线程A收回notify()叫醒告诉以后,依旧是走完了本人线程的营业以后,线程B才开端履行,这也恰好阐明了,notify()方式不开释锁,而wait()方式开释锁。方法三:应用JUC东西类 CountDownLatchjdk1.5以后在java.util.concurrent包下供给了许多并发编程相干的东西类,简化了咱们的并发编程代码的誊写,***CountDownLatch***基于AQS框架,相称于也是保护了一个线程间同享变量state
并发编程中的线程间通信
运转成果为:
并发编程中的线程间通信
方法四:应用 ReentrantLock 联合 Condition
并发编程中的线程间通信
运转成果为:
并发编程中的线程间通信
明显这类方法应用起来并不是很好,代码编写庞杂,并且线程B在被A叫醒以后因为没有猎取锁仍是不能马上履行,也就是说,A在叫醒操纵以后,并不开释锁。这类方式跟 Object 的 wait() 和 notify() 一样。方法五:基础LockSupport完成线程间的堵塞和叫醒LockSupport 是一种十分机动的完成线程间堵塞和叫醒的东西,应用它不必存眷是等候线程进步行仍是叫醒线程先运转,然而得悉道线程的名字。

版权信息Copyright © 银河官网 版权所有    ICP备案编号:鲁ICP备09013610号