我正在浏览 kathy sierra SCJP 1.5第9章(主题),并提到它:
请注意,sleep()方法可以抛出已检查的InterruptedException (你通常会知道这是否可能,因为另一个线程必须明确地做 中断),所以你必须用句柄或声明
来确认异常
我只需要一个示例程序来了解它何时发生(我可以在我的机器上运行)?
我用Google搜索但找不到任何示例代码来测试此功能..
先谢谢
答案 0 :(得分:22)
以下是一个例子:
public class Test
{
public static void main (String[] args)
{
final Thread mainThread = Thread.currentThread();
Thread interruptingThread = new Thread(new Runnable() {
@Override public void run() {
// Let the main thread start to sleep
try {
Thread.sleep(500);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
mainThread.interrupt();
}
});
interruptingThread.start();
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
System.out.println("I was interrupted!");
}
}
}
要完成它:
主线程中的睡眠不是严格必需,但这意味着主线程确实在它被中断之前真正开始睡眠。
答案 1 :(得分:-1)
public class SleepTest1 extends Thread {
@Override
public void run() {
try {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName());
Thread.sleep(1000);
Thread.currentThread().interrupt();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
SleepTest1 st1 = new SleepTest1();
st1.start();
}
}