问答详情
源自:3-3 Java线程停止广为流传的错误方法---interrupt方法

关于Sleep对interrupt的影响

为什么run方法中改成sleep就导致中断状态有问题,而main方法中的sleep调用却没问题

提问者:慕粉1474367326 2016-10-25 22:53

个回答

  • bbug
    2017-01-06 17:42:34

    main方法也是一个线程,但是有没有其他线程对main方法的线程执行了中断命令。没有,所以sleep没问题

    run方法也是个线程,sleep也没问题,但是sleep方法在执行期间不能被中断,中断就给你抛异常。你不去动中断标志也没事。但是你在mian方法执行时候做了run方法所在线程的中断命令,这就是触雷了。。。你完全可以在sleep的try...catch里面this.interrupt();一下,再中断一次也是没问题的

  • 慕粉1474367326
    2016-10-25 23:31:44

    明白了。Thread指代main方法这个主线程,thread指代分支线程。主线程运行的sleep是没遇到中断执行完毕的,而分支有sleep遇到了中断命令