如何用InterruptException去打断一个正在睡眠的线程。写这个一个程序,一个线程sleep(20000),另一个线程打印一百行字符串,第二个线程结束我们就要求第一个线程也结束。
时间: 2024-03-15 10:45:24 浏览: 93
编写程序,使用两个线程,一个队列,其中一个线程从键盘读取数据,放入到队列中,直到读取的数据是字符串quit则结束
5星 · 资源好评率100%
可以使用Thread.interrupt()方法来中断一个正在睡眠的线程。
以下是一个示例程序,其中一个线程睡眠20秒钟,另一个线程打印一百行字符串,并在打印完成后中断第一个线程:
```java
public class InterruptExample {
public static void main(String[] args) {
Thread sleepyThread = new Thread(() -> {
try {
System.out.println("Sleepy thread is sleeping...");
Thread.sleep(20000);
} catch (InterruptedException e) {
System.out.println("Sleepy thread was interrupted!");
}
});
Thread printingThread = new Thread(() -> {
for (int i = 1; i <= 100; i++) {
System.out.println("Printing line " + i);
}
sleepyThread.interrupt();
});
sleepyThread.start();
printingThread.start();
}
}
```
在上面的程序中,我们创建了两个线程:一个线程睡眠20秒钟,另一个线程打印一百行字符串。在打印完成后,我们使用sleepyThread.interrupt()来中断第一个线程。如果第一个线程正在睡眠,则会抛出InterruptedException异常,从而结束该线程的睡眠状态。在上面的程序中,我们在catch块中输出了一条消息,以表明第一个线程已经被中断了。
阅读全文