网小鱼Java的bug小集锦0007

这个bug(也不能算是bug)是在学习多线程时候,其中线程的终止方法this.interrupted()方法调用后和书上的结果不一致,分析记录一下原因,mark一下下~
先上图
运行类的代码如下图:
在这里插入图片描述
在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210321172122367.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1Mjg0NTI0,size_16,color_FFFFFF,t_7
实际上文章上面的运行效果如下图:
在这里插入图片描述
原因是在这里运行次数比较少run()方法跑完了但是this.interrputerd这个方法以及结束了,
当做了调整之后,把需要run中循环执行的次数增多,就能出现资料中的效果
在这里插入图片描述
得到的结果与资料中的结果一致。
从结果中可以看出,方法isInterrupted()并未清除状态标志,所以打印了2个true
最后,再来看一下,这两个方法的解释:
1.this.interrupted():测试当前线程是否已经中断状态,执行后具有将状态标志清除为false的功能;
2.this.interrupted():测试线程Thread对象是否已经是中断状态,但是不清除状态标志。

猜你喜欢

转载自blog.csdn.net/m0_55284524/article/details/115052306
今日推荐