gpt4 book ai didi

multithreading - 为什么线程中断方法没有中断其 sleep 方法?

转载 作者:行者123 更新时间:2023-12-03 13:16:02 24 4
gpt4 key购买 nike

我下面有这个程序

package com;
public class ThreadDemo implements Runnable {
@Override
public void run() {
while(true)
{
try {
System.out.println("Into sleep");
Thread.sleep(1000000000);
System.out.println("Out of sleep");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String args[]) {
ThreadDemo tD = new ThreadDemo();
Thread t1 = new Thread(tD);
t1.start();
t1.interrupt();
}
}

我已经启动了线程,并将调用它的run方法,并在上述指定的几秒钟内进入休眠状态。

我叫 t1.interrupt();
这是屏幕截图

我的问题是为什么

1.线程不退出 sleep 状态吗?
  • 为什么Into sleep打印两次?
  • 最佳答案

    您处于循环中:

  • 您正在 sleep
  • 被打断并打印堆栈跟踪
  • 回到 sleep
  • 永不再次被打断

  • 因此它是“即将退出 sleep 状态”(否则您将看不到堆栈跟踪)-但是您随后要再次调用 Thread.sleep

    如果您只想 sleep 一次,请摆脱循环...

    关于multithreading - 为什么线程中断方法没有中断其 sleep 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26144586/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com