Thread類提供靜態方法sleep(),讓運行這個方法的執行緒阻塞指定毫秒。
注:這里需要捕捉阻塞中斷例外!怎么理解呢,就是在睡覺時醒來不是自然醒,被外力弄醒。
new Thread(()-> {
try {
//執行緒阻塞2秒
Thread.sleep(2000);
//2秒之后執行列印
System.out.println("我自由了!");
} catch (InterruptedException e) {
e.printStackTrace();
}
}).start();
有睡眠方法,肯定要有叫醒方法呀,也就是中斷執行緒阻塞。通過執行緒實體呼叫interrupt方法(會觸發例外),我這里圖方便寫的匿名類,無法呼叫就不呼叫了。算了,貼一下代碼瞅一眼吧。
Thread t1 = new Thread(()->{
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
});
t1.start();
new Thread(()->{
System.out.println("我要打斷t1執行緒睡眠!");
t1.interrupt();
}).start();
運行結果:
我要打斷t1執行緒睡眠!
java.lang.InterruptedException: sleep interrupted
uj5u.com熱心網友回復:
sleep是睡眠,正常情況下會“睡到自然醒”,然后接著干活。interrupt是一種強制打斷一個執行緒,它不止是喚醒,更是破壞整個執行緒的運行。
打個比方:你干活累了,定個鬧鈴睡10分鐘,醒來繼續干活。
如果在你睡5分鐘的時候,突然失火了,這就不光是喚醒了,也不會繼續干活了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/82224.html
標籤:Java相關
上一篇:創建執行緒
