併發程式設計 join 阻塞

2021-10-07 08:48:07 字數 1018 閱讀 5171

看看join 阻塞

很多時候,乙個執行緒的輸入可能非常依賴於另外乙個或者多個執行緒的輸出,此時,這個執行緒就需要等待依賴的執行緒執行完畢,才能繼續執行。jdk提供了join()操作來實現這個功能

a依賴b,那麼在a執行緒中去呼叫 b.join() ,a執行緒開始等待b執行緒

無限等待,直到目標執行緒執行完畢

public

final

void

join()

throws interruptedexception;

在給定的時間,b執行緒沒有執行完成,那麼a執行緒就不等了,開始執行,(cpu排程獲得執行權)

public

final

synchronized

void

join

(long millis)

throws interruptedexception;

看個案例

package juc;

/** * @author yanjun.liu

* @date 2020/6/20--13:27

*/public

class

mythread

@override

public

void

run(

)catch

(interruptedexception e)

} system.out.

println

(system.

currenttimemillis()

+",end "

+this

.getname()

);}}

public

static

void

main

(string[

] args)

throws interruptedexception

}

併發程式設計 阻塞佇列BlockingQueue

在佇列中插入乙個佇列元素稱為入隊,從佇列中刪除乙個佇列元素稱為出隊。因為佇列只允許在一端插入,在另一端刪除,所以只有最早進入佇列的元素才能最先從佇列中刪除,故佇列又稱為先進先出 fifo first in first out 線性表。1 支援阻塞的插入方法 意思是當佇列滿時,佇列會阻塞插入元素的執行...

Java併發程式設計之概念五 阻塞和非阻塞

概念描述 阻塞和非阻塞通常被用來形容多執行緒間的相互影響。解釋 當乙個執行緒占用了臨界區資源,那麼其它需要使用這個資源的執行緒都必須在這個臨界區上等待。等待會導致執行緒掛起,這樣就形成了阻塞。如果占用資源的執行緒一直沒有釋放資源,那麼其它的執行緒在這個臨界區上都不能繼續工作。相反,非阻塞表明多個執行...

併發程式設計 優先順序阻塞佇列

優先順序阻塞佇列 priorityblockingqueue。public static void main string args throws interruptedexceptiontask的比較方式為 override public int compareto task task 執行效果截...