看看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 執行效果截...