我正在阅读 Threads 的 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”休眠怎么办。我不认为在这个例子中是可能的。
有人可以进一步详细说明这个概念。