我下面有这个程序
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 状态”(否则您将看不到堆栈跟踪)-但是您随后要再次调用
Thread.sleep
。如果您只想 sleep 一次,请摆脱循环...
关于multithreading - 为什么线程中断方法没有中断其 sleep 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26144586/