C/C++教程

CountDownLatch 源码分析示例,2021Android进阶者的新篇章

本文主要是介绍CountDownLatch 源码分析示例,2021Android进阶者的新篇章,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

构造函数内部,初始化一个Sync(count)

//java.util.concurrent.CountDownLatch

public CountDownLatch(int count) {

this.sync = new Sync(count);

}

private static final class Sync extends AbstractQueuedSynchronizer {

Sync(int count) {

//AQS中的state值,充当计数器

setState(count);

}

}

1.图解AQS框架

2.AQS内部类Node属性介绍

3.countDown()方法里面做了什么?

//java.util.concurrent.CountDownLatch

public void countDown() {

sync.releaseShared(1);

}

//java.util.concurrent.locks.AbstractQueuedSynchronizer

public final boolean releaseShared(int arg) {

//AQS里面的tryReleaseShared需要子类覆写

if (tryReleaseShared(arg)) {

//state为0的时候,去唤醒等待队列中的线程

doReleaseShared();

return true;

}

return false;

}

//java.util.concurrent.CountDownLatch.Sync

protected boolean tryReleaseShared(int releases) {

for (;

这篇关于CountDownLatch 源码分析示例,2021Android进阶者的新篇章的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!