CountDownLacth的使用
CountDownLacth经常用于监听某些初始化操作,等初始化执行完毕后,通知主线程继续工作(一个线程等待其他所有线程的通知后再执行)。
1 | public class UseCountDownLatch { |
CyclicBarrier的使用
- 场景:
假设每个线程代表一个运动员,当所有运动员都准备好之后才一起出发, 只要有一个运动员没有准备好,其他运动员都等待(所有线程在最后一次调用await()方法之前都做阻塞操作)。
1 | public class UseCyclicBarrier { |
Callable和Future使用
Future模式,JDK给与我们一个实现的封装,使用简单。Future模式非常适合在处理跟耗时很长的业务逻辑时进行使用,可以有效的减少系统的响应时间,提高系统的吞吐量。
1 | public class UseFuture implements Callable<String> { |
Semaphore使用
Semphore可以控制系统的流量。拿到信号量的线程可以进入,否则就等待。通过acquire()和release()获取和释放访问许可。
1 | public class UseSemaphore { |