可重用CountDownLatch的代码实现
CountDownLatch的底层实现原理本文先不铺开说明,只简略说一些想要达到重用CountDownLatch的目标需要对CountDownLatch源码做哪些修改。CountDownLatch底层使用抽象队列同步器实现,我们创建一个CountDownLatch对象时就会在CountDownLatch的构造函数中创建一个CountDownLatch的私有静态内部类Sync的实例对象,Sync就是AbstractQueuedSynchronizer即抽象队列同步器的一个实现类,我们传入count值最后会作为抽象队列同步器中的state值。那就很简单了,想要CountDownLatch可重用,只需要能复原这个state就可以了。实现代码如下:
public class RepeatableCountDownLatch {
private static final class Sync extends AbstractQueuedSynchronizer <