JUC常见工具类(笔记)

笔记来源网上。

Condition

Condition是一个多线程协调通信的工具类,可以让某些线程一起等待某个条件(condition),只有满足条件时,线程才会被唤醒。Condtion在lock.lock()以及Lock.unlock()方法体里面。

Condition主要方法:condition.await()、condition.signal()、condition.signalAll();。
Condtion调用await()方法后会释放锁。

CountDownLatch

countDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完毕后再执行。
countDownLatch提供了两个方法,一个是counDown,一个是await,countDownLatch初始化时,需要传入一个整数,在这个整数倒数到0之前,调用了awati方法的程序都必须等待,然后通过countDown来倒数。

Semaphore

semaphore是我们常说的信号灯,semahore可以控制同时访问的线程个数,通过acqquire获取一个许可,如果没有就等待,痛ugorelease释放一个许可,有点类似限流的作用。比如某商场5个停车位,每个停车位只能停一辆车,如果这个时候来了10辆车,必须要等前面呦空的车位才能进入。

CyclicBarrier

CyclicBarrier的字面意思是可循环使用(Cyclic)的屏障(Barrier).它要做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,知道最后一个下称到达屏障时,屏障才会开门。所有被屏障拦截的线程才会继续工作。CyclicBarrier默认的构造方法时CyclicBarrier(int parties),其参数白哦是屏障拦截的线程数量,每个线程调用await方法告诉CyclicBarrier当前线程已经到达了屏障,然后当前线程被阻塞。

你可能感兴趣的:(java)