私はハッシュを解読するような単純なシミュレーションをしています。その結果、他のすべてのワーカーが結果を見つけたらすぐに停止したいのですか?それは非難されているので、停止以外の方法はありますか?作業中にワーカースレッドを停止するには?
import java.util.Random;
class Worker extends Thread{
int target,start,current,end;
public Worker(int target, int start, int end) {
super();
this.target = target;
this.start = start;
this.end = end;
}
@Override
public void run() {
current=start;
while(target!=current){
System.out.println("Not found target at "+current);
current++;
if(current==end){
break;
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if(target==current){
System.out.println(target+" found");
}
}
}
public class RandomBreak {
public static void main(String[] args) {
Random r=new Random(100);
int target=r.nextInt(100);
System.out.println("trying to search "+target);
Worker w1=new Worker(target,1,30);
Worker w2=new Worker(target,30,60);
Worker w3=new Worker(target,60,90);
Worker w4=new Worker(target,90,100);
w1.start();
w2.start();
w3.start();
w4.start();
}
}
メインスレッドは、どのスレッドがそのアイテムを見つけたのか、またはスレッドがその制限を超えたために終了したのかを知ることができます。メインサーバーにこれを通知するにはどうすればいいですか? –
コールバックを設定すると、応答を見つけたスレッドはコールバックを呼び出して自身とその兄弟を終了します –