停止线程:stop interrupt

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()。

 

 

你可能感兴趣的:(多线程)