我正在尝试学习线程中断以及如何使线程终止而不调用停止。
public class Test implements Runnable{
static Thread threadTest=null;
public static void main(String args[]){
System.out.println("Hello i am main thread");
Test thread= new Test();
threadTest= new Thread(thread);
threadTest.start();
}
private static void exitThread() {
threadTest.interrupt();
}
@Override
public void run() {
boolean run = true;
while (run) {
try {
System.out.println("Sleeping");
Thread.sleep((long) 10000);
exitThread();
System.out.println("Processing");
} catch (InterruptedException e) {
run = false;
}
}
}
}
输出
Hello i am main thread
Sleeping
Processing
Sleeping
我无法理解为什么第二次打印 Sleeping 并且第二次而不是第一次抛出中断的异常。我已经检查了使用 volatile 关键字来停止 java 中的线程的帖子。但我无法理解如何使用它在这种情况下,线程因中断而停止。