我有一个控制器和一个线程来做一些工作,控制器有一个中断功能,可以在紧急情况下关闭线程。
我的代码骨架看起来像这样:
public class SomeController{
private Thread th;
public SomeController(){
th = null;
}
public void Input(int state){
switch(state){
case 0: //emergency shut off
if(th != null){
th.sleep(1000); //make thread sleep first, still no effect
th.interrupt();
}
break;
case 1: //thread creation
th = new Thread(new Runnable(){
public void run(){
try{
DoSomeWork();
}
catch(InterruptedException e)
{
EmergencyProcedures();
}
}
});
th.start();
break;
}
}
但是,当调用中断时,永远不会捕获 InterruptedException。我在这里做错了什么?