java线程唤醒线程_Java中如何唤醒“指定的“某个线程
群里有學C#轉Java的小朋友問:Java中有木有一個辦法喚醒一個“指定的”線程。
熟悉線程操作的小朋友應該知道,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的組合靈活多了呢?
總結
以上是生活随笔為你收集整理的java线程唤醒线程_Java中如何唤醒“指定的“某个线程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 下载excel xlsx_JA
- 下一篇: java美元兑换,(Java实现) 美元