并发控制:Java并发工具类(如Semaphore,CountDownLatch等)的使用示例?
Java中的并发工具类主要是用于管理线程间的协作,防止数据竞争。以下是一些常用的并发工具类及其使用示例:
Semaphore
(信号量):表示在同一时刻允许的最多线程数。
Semaphore semaphore = new Semaphore(3); // 初始化信号量,初始值为3
// 线程1可以获取到信号量
semaphore.acquire();
// 线程2可以获取到信号量,但不超过当前信号量值
semaphore.acquire();
// 线程3可以获取到信号量,但不超过当前信号量值
semaphore.acquire();
// 释放信号量,允许其他线程获取
semaphore.release();
CountDownLatch
(计数down latch):表示一组等待某个事件的线程。
CountDownLatch countDownLatch = new CountDownLatch(3); // 初始化计数器,初始值为3
// 线程1需要等待两个线程完成任务后才能继续执行
countDownLatch.await();
// 线程2可以立即执行任务
// 线程3可以立即执行任务
以上示例展示了如何使用Semaphore
和CountDownLatch
来管理并发控制。
还没有评论,来说两句吧...