一个线程在没有执行可中断方法之前就被打断,会出现什么情况?

示例代码:

public static void main(String[] args) {
    System.out.println(Thread.currentThread().getName() + ":" + Thread.interrupted());
    //中断主线程
    Thread.currentThread().interrupt();
    //执行isInterrupted不会重置中断信号
    System.out.println(Thread.currentThread().getName() + ":" + Thread.currentThread().isInterrupted());
    long start = System.currentTimeMillis();
    try {
        TimeUnit.SECONDS.sleep(2);
    } catch (InterruptedException e) {
        System.out.println((System.currentTimeMillis() - start) + "ms后中断了");
    }
}

运行结果:
一个线程在没有执行可中断方法之前就被打断,会出现什么情况?_第1张图片
可以发现,如果一个线程在没有执行可中断方法之前就被打断,会立即中断执行可中断方法,所以才几乎会是0ms。

你可能感兴趣的:(Java并发编程)