コントローラーと何らかの作業を行うスレッドがあります。コントローラーには、緊急時にスレッドを遮断する割り込み機能があります。
私のコードのスケルトンは次のようになります。
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 がキャッチされることはありません。ここで何が間違っていますか?