sleep interruptedException异常

Thread.sleep()后,线程会处于阻塞状态,没有机会得到CPU时间片,怎么会抛出interruptedException异常?

[quote]我的意思是说:线程正在睡觉呢,怎么有时间去抛异常? [/quote]
interrupt的意思就是“吵醒它”,它被吵醒了,生气了就扔个“板砖”出来。这有什么好纠结的?

InterruptedException - 如果另一个线程中断了当前线程。
我写了一个简单的例子:
[code="java"]
public static void main(String[] args) { final Thread t1 = new Thread() {
public void run() {
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
Thread t2 = new Thread() {
public void run() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
t1.interrupt();
}
};
t1.start();
t2.start();
}
[/code]

其实interruptedException异常是对阻塞方法的一个良好的提示异常。
Thread.sleep()是线程低级可中断阻塞方法。当你调用sleep时其实是取消阻塞并抛出 InterruptedException。也就是中断了此线程。
如果你非要去了解的话给你个文章,我以前看的。翻了半天幸好文章还在。
[url]http://www.ibm.com/developerworks/cn/java/j-jtp05236.html[/url]