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

提问 关于 while(!this.isInterrupted()){}

老师的案例中:

第一次设置whlie(true),线程没有结束,那么main()方法中thread.interrupt()中断的是哪个线程?

第二次改为while(!this.isInterrupted()){},其他没变,那么按照上一次的说法thread.interrupt()并没有中断线程,因此isInterrupted()获取的值应为false,!false就是true,那么while循环应该也不会停止,所以请问this.isInterrupted()中的当前线程是哪个线程?

谢谢各位!

提问者:不是咸鱼 2017-03-29 23:56

个回答

  • kuhaku_
    2018-12-24 12:09:06

    thread调用了interrupt()方法, 并不是如字面意义上就会将线程终止, 而是将线程的终止状态设置为true, 使isInterrupted()方法返回ture, 而这个时候while循环里的判断条件又没有提到isInterrupted()方法, 所以即使thread调用了interrupt()方法, 对这个循环也没有任何影响啊, 所以线程还是会一直执行下去

  • N_E_O
    2017-04-12 00:16:52

    interrupt()这个方法并不是停止线程的方法,所以thread这个线程因为while(true)是不会终止的

  • N_E_O
    2017-03-30 13:53:30

    thread.interrupt()中断的是WorngWayStopThread 的对象thread这个线程;

    while(!this.isInterrupt())  其他没变,因为thread调用了interrupt()方法,所以this.isInterrupt()会返回true,!true就是FALSE,所以while循环会停止,这个this.isInterrupt()还是thread这个线程