public class StopTest extends Thread{
boolean flag = true;
public void run(){
while(flag){
System.out.println("run...");
try {
Thread.sleep(1000L);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("EXCEPTION: " + e.getMessage());
return;
}
}
}
public static void main(String[] args){
StopTest stopTest = new StopTest();
stopTest.start();
try {
Thread.sleep(5000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
stopTest.stop();
// stopTest.interrupt();
// stopTest.flag = false;
}
}
interrupt,无return:
run...
run...
run...
run...
run...
java.lang.InterruptedException: sleep interrupted
at java.lang.Thread.sleep(Native Method)
at com.xw.thread.StopTest.run(StopTest.java:15)
run...
EXCEPTION: sleep interrupted
run...
interrupt,有return:
run...
run...
run...
run...
run...
java.lang.InterruptedException: sleep interrupted
at java.lang.Thread.sleep(Native Method)
at com.xw.thread.StopTest.run(StopTest.java:15)
EXCEPTION: sleep interrupted
stop: 打印5次run...就停止了,无异常抛出,此API已停用
interrupt 无return:第5次抛出 InterruptedException,但不会停止
interrupt 有return:第5次抛出InterruptedException,并且停止
flag=false:打印5次run...就停止了,无异常抛出
interrupt可以中断wait()、sleep()、join()。