我正在讀線程的sleep()方法。我試圖開發一個小例子。關於這個例子我有兩個 混淆。如何把一個特定的線程睡覺()?
/**
* Created with IntelliJ IDEA.
* User: Ben
* Date: 8/7/13
* Time: 2:48 PM
* To change this template use File | Settings | File Templates.
*/
class SleepRunnable implements Runnable{
public void run() {
for(int i =0 ; i < 100 ; i++){
System.out.println("Running: " + Thread.currentThread().getName());
}
try {
Thread.sleep(500);
}
catch(InterruptedException e) {
System.out.println(Thread.currentThread().getName() +" I have been interrupted");
}
}
}
public class ThreadSleepTest {
public static void main(String[] args){
Runnable runnable = new SleepRunnable();
Thread t1 = new Thread(runnable);
Thread t2 = new Thread(runnable);
Thread t3 = new Thread(runnable);
t1.setName("Ben");
t2.setName("Rish");
t3.setName("Mom");
t1.start();
t2.start();
t3.start();
}
}
- 正如我在去年的帖子討論,會如果一個線程在指定的時間量後醒來發生中斷例外,它會簡單地從run方法返回。在這個例子中,代碼永遠不會進入catch()塊。爲什麼這樣?
- 現在,上面例子中的所有線程都會睡一會兒,並且會優雅地輪流,如果我特別想讓線程「Ben」睡眠,該怎麼辦。在這個例子中我不這麼認爲。
有人可以進一步闡述這個概念。
你永遠不會中斷您的任何線程 - 沒有爲什麼睡覺會拋出異常... – assylias