溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么在java中實(shí)現(xiàn)線程通信

發(fā)布時(shí)間:2021-04-21 17:11:00 來(lái)源:億速云 閱讀:135 作者:Leah 欄目:編程語(yǔ)言

本篇文章給大家分享的是有關(guān)怎么在java中實(shí)現(xiàn)線程通信,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

Java是什么

Java是一門面向?qū)ο缶幊陶Z(yǔ)言,可以編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序。

一、線程通信目的

為了更好的協(xié)作,線程無(wú)論是交替式執(zhí)行,還是接力式執(zhí)行,都需要進(jìn)行通信告知。

二、線程通信方法

1.join

一個(gè)線程等待另一個(gè)線程執(zhí)行完畢后再執(zhí)行。join其實(shí)合理理解成是線程合并,當(dāng)在一個(gè)線程調(diào)用另一個(gè)線程的join方法時(shí),當(dāng)前線程阻塞等待被調(diào)用join方法的線程執(zhí)行完畢才能繼續(xù)執(zhí)行,所以join的好處能夠保證線程的執(zhí)行順序,但是如果調(diào)用線程的join方法其實(shí)已經(jīng)失去了并行的意義,雖然存在多個(gè)線程,但是本質(zhì)上還是串行的,最后join的實(shí)現(xiàn)其實(shí)是基于等待通知機(jī)制的。

2.wait/notify

在一個(gè)線程內(nèi)調(diào)用該線程鎖對(duì)象的wait方法,線程將進(jìn)入等待隊(duì)列進(jìn)行等待直到被通知或者被喚醒。

3.CountdownLatch

一個(gè)線程等待(countDownLatch.await())其他任意個(gè)數(shù)的線程執(zhí)行完畢后(countDownLatch.countDown())再執(zhí)行

4.CyclicBarrier

所有線程先各自準(zhǔn)備,當(dāng)所有線程都準(zhǔn)備完畢(全部都調(diào)用了cyclicBarrier.await())后統(tǒng)一開(kāi)始執(zhí)行后續(xù)操作

5.Semaphore

可以控制同時(shí)訪問(wèn)的線程個(gè)數(shù),通過(guò)acquire()獲取一個(gè)許可,如果沒(méi)有就等待,而release()釋放一個(gè)許可

6.Callable

子線程將執(zhí)行結(jié)果返回給父線程

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

(1)CountDownLatch和CyclicBarrier都能夠?qū)崿F(xiàn)線程之間的等待,只不過(guò)它們側(cè)重點(diǎn)不同:

(2)CountDownLatch一般用于某個(gè)線程A等待若干個(gè)其他線程執(zhí)行完任務(wù)之后,它才執(zhí)行;

(3)CyclicBarrier一般用于一組線程互相等待至某個(gè)狀態(tài),然后這一組線程再同時(shí)執(zhí)行;

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

(5)Semaphore其實(shí)和鎖有點(diǎn)類似,它一般用于控制對(duì)某組資源的訪問(wèn)權(quán)限。

以上就是怎么在java中實(shí)現(xiàn)線程通信,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI