国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > java基础 > 线程在java中的通信

线程在java中的通信

头像

小妮浅浅

2021-01-08 10:40:502639浏览 · 0收藏 · 0评论

基于多个线程一起运行时,会出现一些不必要的麻烦,这里我们可以应用线程通信的原理。即在程序运行之前,线程内部之间就沟通好下一步的任务情况,进行通信的合作。接下来我们简单分析线程通信的目的,然后主要就线程通信的几种方法为大家展示,都来看看有哪些吧。

一、线程通信目的

为了更好的协作,线程无论是交替式执行,还是接力式执行,都需要进行通信告知。

二、线程通信方法

1.join

一个线程等待另一个线程执行完毕后再执行。join其实合理理解成是线程合并,当在一个线程调用另一个线程的join方法时,当前线程阻塞等待被调用join方法的线程执行完毕才能继续执行,所以join的好处能够保证线程的执行顺序,但是如果调用线程的join方法其实已经失去了并行的意义,虽然存在多个线程,但是本质上还是串行的,最后join的实现其实是基于等待通知机制的。

2.wait/notify

在一个线程内调用该线程锁对象的wait方法,线程将进入等待队列进行等待直到被通知或者被唤醒。

3.CountdownLatch

一个线程等待(countDownLatch.await())其他任意个数的线程执行完毕后(countDownLatch.countDown())再执行

4.CyclicBarrier

所有线程先各自准备,当所有线程都准备完毕(全部都调用了cyclicBarrier.await())后统一开始执行后续操作

5.Semaphore

可以控制同时访问的线程个数,通过acquire()获取一个许可,如果没有就等待,而release()释放一个许可

6.Callable

子线程将执行结果返回给父线程

FutureTask<Integer> futureTask = new FutureTask<>(callable);
new Thread(futureTask).start();
Object result = futureTask.get();

(1)CountDownLatch和CyclicBarrier都能够实现线程之间的等待,只不过它们侧重点不同:

(2)CountDownLatch一般用于某个线程A等待若干个其他线程执行完任务之后,它才执行;

(3)CyclicBarrier一般用于一组线程互相等待至某个状态,然后这一组线程再同时执行;

(4)另外,CountDownLatch是不能够重用的,而CyclicBarrier是可以重用的。

(5)Semaphore其实和锁有点类似,它一般用于控制对某组资源的访问权限。

以上就是线程在java中的通信方法,这里我们重点讲了Callable的处理方法,其他的方法做了原理上的介绍吗,想要深入了解可以在课后查询资料。

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

情满四合院| 女性左腿又开腿肚子中间疼视频| 公司企业文化展示墙| 人与动物胶配方视频荷尔蒙| 女性扒开大腿内侧小肚子痒| 《一滴都不许漏》何泽城林荫| 太硬了…轻点…嗯嗯灬小俊| 情趣内衣| 二人努力生猴子免费观看| 日本大片PPT免费PPT| 情趣内衣| 成品图片的网站| 棉签和冰块| 大龟慢慢挺进女友闺蜜的小说| 美女和帅哥一起努力生产豆浆的视.| 台湾《洞门为君开》演员表| 闺蜜老公把我压在怀里| 美女跳舞| 女性私密紧致情趣玩具 | 骨科1v1溢奶吸不完怎么办| 东北老肥熟口味重的原因分析| 疯狂做爰XXXX高潮潮后感染 | 主动把乳头放进男朋友嘴巴里| 韩漫免费浸画在线阅读| 荡公乱妇第1章情公苏雪视频| 女人的滋味| 高压监狱2法国1时43分| 快拨出天我是你母亲歌词监控| 《XL司令》第一季动漫免费播放| 兽父1到16集一口气看完| 女神开档泳装图片| 臣卜扌桑扌圭鬲蘑菇| 蜜桃影视| 太硬了…轻点…嗯嗯灬小俊| 憋尿白丝小肚子凸起高冷知乎| 爱上兄弟的母亲6集免费观看 | 我穿KK被同桌C出水了H漫画| 大姨妈来了同房内射吃避孕药| 女性三角毛毛区有片毛掉光正常吗 | 野花韩国视频中文免费观看7| 一夹一摇怎么练出来