我正在尝试用 Java 编写我的第一个多线程程序。我不明白为什么我们需要围绕 for 循环进行这种异常处理。当我在没有 try/catch 子句的情况下编译时,它会给出一个InterruptedException
.
这是消息:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Unhandled exception type InterruptedException
但是当使用 try/catch 运行时,catch 块中的 sysout 永远不会显示 - 这意味着无论如何都没有捕获到这样的异常!
public class SecondThread implements Runnable {
Thread t;
SecondThread() {
t = new Thread(this, "Thread 2");
t.start();
}
public void run() {
try {
for (int i=5; i>0; i--) {
System.out.println("thread 2: " + i);
Thread.sleep(1000);
}
}
catch (InterruptedException e) {
System.out.println("thread 2 interrupted");
}
}
}
public class MainThread {
public static void main(String[] args) {
new SecondThread();
try {
for (int i=5; i>0; i--) {
System.out.println("main thread: " + i);
Thread.sleep(2000);
}
}
catch (InterruptedException e) {
System.out.println("main thread interrupted");
}
}
}