不是咸鱼
2017-03-29 23:56
老师的案例中:
第一次设置whlie(true),线程没有结束,那么main()方法中thread.interrupt()中断的是哪个线程?
第二次改为while(!this.isInterrupted()){},其他没变,那么按照上一次的说法thread.interrupt()并没有中断线程,因此isInterrupted()获取的值应为false,!false就是true,那么while循环应该也不会停止,所以请问this.isInterrupted()中的当前线程是哪个线程?
谢谢各位!
thread调用了interrupt()方法, 并不是如字面意义上就会将线程终止, 而是将线程的终止状态设置为true, 使isInterrupted()方法返回ture, 而这个时候while循环里的判断条件又没有提到isInterrupted()方法, 所以即使thread调用了interrupt()方法, 对这个循环也没有任何影响啊, 所以线程还是会一直执行下去
interrupt()这个方法并不是停止线程的方法,所以thread这个线程因为while(true)是不会终止的
thread.interrupt()中断的是WorngWayStopThread 的对象thread这个线程;
while(!this.isInterrupt()) 其他没变,因为thread调用了interrupt()方法,所以this.isInterrupt()会返回true,!true就是FALSE,所以while循环会停止,这个this.isInterrupt()还是thread这个线程
深入浅出Java多线程
186078 学习 · 464 问题
相似问题