有3个线程,线程A和线程B并行执行,线程C需要和线程A和B执行完成后才能执行,使用闭锁CountDownLatch实现
解题思路创建一个类 :Abc Test
CountDownLatch初始化值为2
新增 A B线程,在线程里执行逻辑后,计算-1
countDownLatch.countDown()
新增C线程,等待A,B线程来完成
countDownLatch.await();
执行相关的逻辑
代码详解AbcTest:
题目二描述 :栅栏 题目有3个线程,线程A和线程B并发执行,线程C需要A和B执行完成后才能执行。使用删栏CyclicBarrier实现
解题思路栅栏类似于闭锁,它能阻塞一组线程直到某个事件发生。栅栏与闭锁的关键区别在于,所有的线程
必须同时到达栅栏的位置,才能继续执行。
创建一个类:Abc Test2
CyclicBarrier初始化值为3
新增A,B线程,在线程里执行完逻辑后,栅栏等待,符合三个线程都达到栅栏才往下执行
cyclicBarrier.wait();
新增C线程,先栅栏等待,等A,B线程到达栅栏,就一起往下执行
代码详解到此这篇关于一文详解Java闭锁和栅栏的实现的文章就介绍到这了,更多相关Java闭锁 栅栏内容请搜索七叶笔记以前的文章或继续浏览下面的相关文章希望大家以后多多支持七叶笔记!