這篇文章將為大家詳細(xì)講解有關(guān)Java中線程之間的通信是如何實(shí)現(xiàn)的,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
創(chuàng)新互聯(lián)是一家專業(yè)提供長(zhǎng)寧企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、H5場(chǎng)景定制、小程序制作等業(yè)務(wù)。10年已為長(zhǎng)寧眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。正常情況下,每個(gè)子線程完成各自的任務(wù)就可以結(jié)束了。不過(guò)有的時(shí)候,我們希望多個(gè)線程協(xié)同工作來(lái)完成某個(gè)任務(wù),這時(shí)就涉及到了線程間通信了。
本文涉及到的知識(shí)點(diǎn):thread.join(), object.wait(), object.notify(), CountdownLatch, CyclicBarrier, FutureTask, Callable 等。
下面我從幾個(gè)例子作為切入點(diǎn)來(lái)講解下 Java 里有哪些方法來(lái)實(shí)現(xiàn)線程間通信。
如何讓兩個(gè)線程依次執(zhí)行?
假設(shè)有兩個(gè)線程,一個(gè)是線程 A,另一個(gè)是線程 B,兩個(gè)線程分別依次打印 1-3 三個(gè)數(shù)字即可。我們來(lái)看下代碼:
private static void demo1() { Thread A = new Thread(new Runnable() { @Override public void run() { printNumber("A"); } }); Thread B = new Thread(new Runnable() { @Override public void run() { printNumber("B"); } }); A.start(); B.start(); }