Javaのマルチスレッドinterrupt中断スレッドの3つの方法
方法1:
メソッド2(Javaが推奨するメソッド):
方法3
通常の方法でスレッドを中断し、ループでsleep()メソッドを呼び出すことができないことを要求します.
IO読み書きスレッド停止について
理論的には止められず、IOストリームを中断し、異常を投げ出してから処理するしかない.ビッグデータのIO読み書き操作をループに入れて行うことが望ましい.これにより、ループごとにスレッドが停止するタイミングがあり、運転中のスレッドをどのように停止するかの問題にも転化する.
@Override
public void run(){
for(int i = 0; i < 100; i++){
System.out.println(this.getname()+":"+i);
try{
Thread.sleep(1000);
}catch(InterruptedException e){
System.out.println(" !");
return; // ,
}
}
}
メソッド2(Javaが推奨するメソッド):
// FlagThread ,
public void FlagThread extends Thread{
//
private boolean isInterrupted = false;
//
public void stopCurrentThread(){
this.isInterrupted = true; //
super.interrupt(); // ,
}
@Override
public void run(){
while(!isInterrupted){
try{
for(int i = 0; i < 100; i++){
System.out.println(this.getname()+":"+i);
Thread.sleep(1000);
}
}catch(InterruptedException e){
// ,
}
}
System.out.println(" !");
}
}
方法3
通常の方法でスレッドを中断し、ループでsleep()メソッドを呼び出すことができないことを要求します.
IO読み書きスレッド停止について
理論的には止められず、IOストリームを中断し、異常を投げ出してから処理するしかない.ビッグデータのIO読み書き操作をループに入れて行うことが望ましい.これにより、ループごとにスレッドが停止するタイミングがあり、運転中のスレッドをどのように停止するかの問題にも転化する.