上一篇 <<<Semaphore信号量
下一篇 >>>线程池
- 屏障---CyclicBarrier
- new CyclicBarrier(5); 需要等待的线程总数
- cyclicBarrier.await();等待线程数达到屏障数,然后多个线程一起执行后面的操作
测试代码
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() + ",正在写入数据");
try {
Thread.sleep(3000);
} catch (Exception e) {
}
System.out.println(System.currentTimeMillis()+" 线程" + Thread.currentThread().getName() + ",写入数据成功.....");
try {
cyclicBarrier.await();
} catch (Exception e) {
}
System.out.println(System.currentTimeMillis()+" 线程" + Thread.currentThread().getName() + "所有线程执行完毕..........");
}
相关文章链接:
<<<多线程基础
<<<线程安全与解决方案
<<<锁的深入化
<<<锁的优化
<<<Java内存模型(JMM)
<<<Volatile解决JMM的可见性问题
<<<Volatile的伪共享和重排序
<<<CAS无锁模式及ABA问题
<<<Synchronized锁
<<<Lock锁
<<<AQS同步器
<<<Condition
<<<CountDownLatch同步计数器
<<<Semaphore信号量
<<<线程池
<<<并发队列
<<<Callable与Future模式
<<<Fork/Join框架
<<<Threadlocal
<<<Disruptor框架
<<<如何优化多线程总结