线程常用方法isInterrupted() VS interrupted()和Sleep() VS Suspend()

isInterrupted() VS interrupted()

1、源码解析

1)interrupted() 测试当前线程是否被中断,是返回true,否返回false

public static boolean interrupted() {
        return currentThread().isInterrupted(true);
    }

2)isInterrupted()测试该线程是否被中断,是返回true,否返回false
 public boolean isInterrupted() {
        return isInterrupted(false);
    }
private native boolean isInterrupted(boolean ClearInterrupted);
2、区别

这两种方法都可以在Thread类中判断线程是否通过interrupt方法终止

区别是:

1)interrupted是静态的方法,可以直接通过类名调用;isInterrupted是非静态的,需要通过实例对象来调用。

2)interrupted是用来判断当前线程是否被中断。isInterrupted可以用来判断其他线程是否被中断

Sleep() VS Suspend()

1、源码解析
1)sleep()使当前运行的线程暂时的停止,从运行状态到阻塞,millis之后,进入runnable状态,等待JVM的线程调度。
 public static native void sleep(long millis) throws InterruptedException;
注意:
1、sleep方法有两个重载形式,其中一种不仅仅可以设毫秒还可以设纳秒,但大多数OS平台上的JAVA虚拟机无法精确到毫秒,因此JVM取最接近这个值的毫秒
2、使用sleep方法时必须使用throws或try{...}catch{...}。因为run方法无法使用throws

2)suspend()首先它不建议使用了。它主要是在一个线程中通过suspend方法来挂起另一个线程。通过resume来唤醒。
@Deprecated
    public final void suspend() {
        checkAccess();
        suspend0();
    }


参考资料: http://developer.51cto.com/art/200911/162925.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值