我们知道,蜂王要死的时候会生产很多蜂王卵.这些卵同时糊化,第一出来的会干掉其他还未出来的卵,自己成为蜂王.
有没有类似的多线程算法.
并发执行,其中一个线程有结果,就结束其他线程.
问题补充
CountDownLatch这个貌似不行
ExecutorService接口的invokeAny方法
CountDownLatch
[code="java"]import java.util.concurrent.CountDownLatch;
public class RunTest {
static CountDownLatch doneSignal = new CountDownLatch(2);
public static void main(String[] args) {
Runner r1 = new Runner(doneSignal,"liu",100);
Runner r2 = new Runner(doneSignal,"jackson",50);
new Thread(r1).start();
new Thread(r2).start();
}
}
class Runner implements Runnable{
private CountDownLatch doneSignal;
private String name ;
private long speed ;
public Runner(CountDownLatch doneSignal,String name,long speed){
this.doneSignal = doneSignal;
this.name = name;
this.speed = speed;
}
public void run(){
int i = 0;
for(i = 0; i < 20; i++){
if(doneSignal.getCount() == 1){
System.out.println(name + " lose!");
return;
}
try {
Thread.sleep(speed);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(name + " win!");
doneSignal.countDown();
}
}[/code]
Semaphore也可以.
只给予一个许可.最先得到许可的线程可以运行.其他的线程阻塞并死亡