发包工具_java并发包工具类
1. CountDownLatch(线程计数器 )
CountDownLatch类位于java.util.concurrent 包下,利用它可以实现类似计数器的功能。比如有一个任务 A,它要等待其他 4 个任务执行完毕之后才能执行,此时就可以利用 CountDownLatch来实现这种功能了。
2. CyclicBarrier(回环栅栏-等待至 barrier 状态再全部同时执行)
字面意思回环栅栏,通过它可以实现让一组线程等待至某个状态之后再全部同时执行。叫做回环是因为当所有等待线程都被释放以后,CyclicBarrier 可以被重用。我们暂且把这个状态就叫做barrier,当调用 await()方法之后,线程就处于 barrier 了。 CyclicBarrier 中最重要的方法就是 await 方法,它有 2 个重载版本:
3. Semaphore(信号量-控制同时访问的线程个数)
Semaphore 翻译成字面意思为 信号量,Semaphore 可以控制同时访问的线程个数,通过acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。 Semaphore 类中比较重要的几个方法:
例子:若一个工厂有5 台机器,但是有8个工人,一台机器同时只能被一个工人使用,只有使用完 了,其他工人才能继续使用。那么我们就可以通过 Semaphore 来实现:
注: CountDownLatch 和 CyclicBarrier 都能够实现线程之间的等待,只不过它们侧重点不同; CountDownLatch 一般用于某个线程 A 等待若干个其他线程执行完任务之后,它才执行; 而 CyclicBarrier 一般用于一组线程互相等待至某个状态,然后这一组线程再同时执行; 另外,CountDownLatch 是不能够重用的,而 CyclicBarrier 是可以重用的。 Semaphore 其实和锁有点类似,它一般用于控制对某组资源的访问权限。
总结
以上是生活随笔为你收集整理的发包工具_java并发包工具类的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: element ui怎么调图标的大小_大
- 下一篇: 标题在图表上_从零开始学Excel——标