首页 > 编程语言 > 详细

Java Thread类中的interrupt(),interrupted()以及isInterrupted()

时间:2020-06-18 18:54:03      阅读:47      评论:0      收藏:0      [点我收藏+]

首先区分一下这三个发放的返回值,虽然他们长得都很像,但是interrupt方法是一个动作,他的返回值是void,他将调用对象的中断状态进行标记,但是不会让这个进程立即停止;与之相对的另外两个方法的返回值都是boolen类型,表示进程的是否处于中断状态

 

当然他们也是有区别的,interrupted()的作用是测试当前线程是否被中断(注意是当前进程),返回一个boolean值并清除中断状态,所以在不进行二次中断的情况下,第二次调用时中断状态已经被清除,将返回一个false。他的源码如下,内部实现是调用的当前线程的isInterrupted()。

技术分享图片

 

同时因为interrupted()是一个静态方法,所以调用的时候前面是类名,用对象去调用会返回如下提示:

技术分享图片

 

 这么调用的本来意图可能是返回线程 t1 的状态,但是实际上返回的是当前进程(也就是这个语句所在进程的状态),如果想得到 t1 的状态,应该使用isInterrupted()方法

isInterrupted()是实例方法,是调用该方法的对象所表示的那个线程的isInterrupted(),不会重置当前线程的中断状态,它的源码如下:

技术分享图片

 

Java Thread类中的interrupt(),interrupted()以及isInterrupted()

原文:https://www.cnblogs.com/owczhlol/p/13158874.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!