ben*_*enz 1 java multithreading
我正在阅读Java Threads.我正在研究sleep()方法.这些书说明了这一点
当一个线程遇到一个
sleep调用时,它必须进入休眠状态指定的时间,除非它在唤醒时间之前被中断.
我正在阅读有关中断的内容,但是线程如何向自身发送中断?我想另一个线程可以发送中断吗?我理解正确吗?另外,两个线程,一个将发送中断的线程应该具有相同的目标Runnable?如果假设线程被中断,它是否会返回Runnable状态?我真的很抱歉,如果我听起来很愚蠢,那对我来说真是太新了.谢谢
一个线程在睡觉时不会自动中断,因为它正在......睡觉.
一张图片胜过千言万语所以这里有一个简单的例子,一个线程开始睡眠,主线程中断它:
public static void main(String[] args) throws Exception {
Runnable sleeper = new Runnable() {
public void run() {
try {
System.out.println("sleeper is going to sleep");
Thread.sleep(1000);
System.out.println("sleeper is awake");
} catch (InterruptedException e) {
System.out.println("sleeper got interrupted");
}
}
};
Thread t = new Thread(sleeper);
t.start(); //run sleeper in its own thread
Thread.sleep(500); //sleeping in main a little to make sure t is started
t.interrupt();
}
Run Code Online (Sandbox Code Playgroud)
打印:
sleeper is going to sleep
sleeper got interrupted
Run Code Online (Sandbox Code Playgroud)