为了账号安全,请及时绑定邮箱和手机立即绑定

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

老师的案例中:

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

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

谢谢各位!

正在回答

3 回答

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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

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

0 回复 有任何疑惑可以回复我~
#1

蔚然成麟er

我想不明白,while(true)中,main这个线程结束之前,thread这个线程执行了interrupt(),说明已经中止了啊,但是在main这个线程结束之后,为什么还会继续输出Thread is running,是不是因为while(true)是死循环,thread会一直循环?
2017-04-05 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信