我知道 CountDownLatch使一个或多个线程等待其他线程,CylicBarrier使所有线程相互等待
但是完全可以使用CountDownLatch替代CyliBarrier的啊
[code="java"]
package Thread;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
public class line3 implements Runnable{
private CountDownLatch cd;
private int id;
public line3(CountDownLatch cd,int id){
this.cd=cd;
this.id=id;
}
public void run() {
try {
TimeUnit.MILLISECONDS.sleep(id*1000);
cd.countDown();//这样貌似和CylicBarrier一个效果啊
System.out.println("countDown"+id);
cd.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("line3 "+id);
}
public static void main(String[] args) {
CountDownLatch cd=new CountDownLatch(10);
ExecutorService es=Executors.newCachedThreadPool();
for (int i = 0; i < 10; i++) {
es.execute(new line3(cd,i));
}
es.shutdown();
}
}
[/code]
书上说CylicBarrier可以重复使用,CountDownLatch只能用一次,这个一直看不明白啊?求高手解决