关于Sleep对interrupt的影响

来源:3-3 Java线程停止广为流传的错误方法---interrupt方法

慕粉1474367326

2016-10-25 22:53

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

写回答 关注

2回答

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

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

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

    bbug

    sleep不是yield,sleep执行的时候不释放对象锁的

    2017-01-06 17:43:53

    共 1 条回复 >

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

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

深入浅出Java多线程

带你一起深入浅出多线程,掌握基础,展望进阶路线

186088 学习 · 464 问题

查看课程

相似问题