Java Thread的interrupted()、isInterrupted()、interrupt()三者的区别

java Thread 中有三个方法用于中断线程,分别是:

1)public static boolean interrupted();

2)public boolean isInterrupted();

3)public void interrupt();

第一个方法是类方法,其余两个是实例方法。

先说第三个方法interrupt,其作用是给线程发送一个中断的信号量,也就是设置线程实例中的某个标记(假设称为stopFlag)字段为true,源码里的注释如是:Just to set the interrupt flag,该方法并不会立刻终止线程,线程依旧会继续跑下去。注:如果在线程受阻状态下(wait,sleep等)调用该方法,将会抛出一个InterruptException.

-----------------------------------------------------------------

那么如何立刻终止线程呢?

isInterrupted()方法返回stopFlag的值,所以在run方法中,可以手动终止该线程,可以在run方法中添加如下代码:

if(Thread.currentThread().isInterrupted()){

reutrn ;

}

----------------------------------------------------------------------------

最后还有第一个方法interrupted(),该方法将清除中断状态,如果本次调用进行了清除操作,则返回true,否则返回false;

举个例子:

如果stopFlag为true,调用interrupted(),则stopFlag将被设置为false,同时函数返回true;

如果stopFlag为false,调用interrupted(),则直接返回false.

 

转载于:https://my.oschina.net/eqshen/blog/751814

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值