1. 程式人生 > 其它 >Java中如何喚醒“指定的“執行緒

Java中如何喚醒“指定的“執行緒

技術標籤:javajava多執行緒thread

熟悉執行緒操作的小夥伴應該知道,Java中執行緒的掛起和喚醒一般用synchronized + wait + notify完成。

比如:

synchronized(o) {

    o.wait(); //wait狀態

}

在其他執行緒中o.notify(),就可以喚醒在o上wait的執行緒。

可是如果o上有多個執行緒wait,是沒有辦法喚醒“指定”的某個執行緒的。

不過,Java6之後,轉機來了,Java6引入了LockSupport這個類,好了,廢話不多說,我們直接上程式碼:

public class Test {
    public
static void main(String[] args) throws Exception { Thread t = new Thread(()->{ System.out.println("start"); LockSupport.park(); //一直wait System.out.println("continue"); }); t.start(); Thread.sleep(1000); LockSupport.
unpark(t); //指定t執行緒解除wait態 } }

如上所述,LockSupport的park可以讓當前執行緒進入wait狀態,
而unpark可以解除指定執行緒的wait態,不需要擁有某個物件的特定鎖,
是不是比sync/wait/notify的組合靈活多了呢?

文章會持續更新,歡迎大家關注和收藏哦!

大家也可以關注我的公眾號:網際網路架構師修煉之道

在這裡插入圖片描述

會有更多的驚喜呢!