上一篇 <<<Semaphore信號量
下一篇 >>>線程池
- 屏障---CyclicBarrier
- new CyclicBarrier(5); 需要等待的線程總數(shù)
- cyclicBarrier.await();等待線程數(shù)達到屏障數(shù)宰僧,然后多個線程一起執(zhí)行后面的操作
測試代碼
CyclicBarrier cyclicBarrier=new CyclicBarrier(3);
for (int i = 0; i < 5; i++) {
Writer writer = new Writer(cyclicBarrier);
writer.start();
}
public void run() {
System.out.println(System.currentTimeMillis()+" 線程" + Thread.currentThread().getName() + ",正在寫入數(shù)據(jù)");
try {
Thread.sleep(3000);
} catch (Exception e) {
}
System.out.println(System.currentTimeMillis()+" 線程" + Thread.currentThread().getName() + ",寫入數(shù)據(jù)成功.....");
try {
cyclicBarrier.await();
} catch (Exception e) {
}
System.out.println(System.currentTimeMillis()+" 線程" + Thread.currentThread().getName() + "所有線程執(zhí)行完畢..........");
}
相關(guān)文章鏈接:
<<<多線程基礎(chǔ)
<<<線程安全與解決方案
<<<鎖的深入化
<<<鎖的優(yōu)化
<<<Java內(nèi)存模型(JMM)
<<<Volatile解決JMM的可見性問題
<<<Volatile的偽共享和重排序
<<<CAS無鎖模式及ABA問題
<<<Synchronized鎖
<<<Lock鎖
<<<AQS同步器
<<<Condition
<<<CountDownLatch同步計數(shù)器
<<<Semaphore信號量
<<<線程池
<<<并發(fā)隊列
<<<Callable與Future模式
<<<Fork/Join框架
<<<Threadlocal
<<<Disruptor框架
<<<如何優(yōu)化多線程總結(jié)