CountDownLatch
来源:互联网 发布:mac版网络游戏 编辑:程序博客网 时间:2024/06/05 19:14
1.类声明:
//需要等待某个条件完成,即等待其他某些线程完成操作,才能继续执行的时候,可以使用此类。在计数器到达0之前,await方法会一直阻塞public class CountDownLatch{}
2.变量:
//同步器 private final Sync sync;
3.方法:
//初始化 public CountDownLatch(int count) { if (count < 0) throw new IllegalArgumentException("count < 0"); this.sync = new Sync(count); } //自定义队列同步器,控制并发的访问 private static final class Sync extends AbstractQueuedSynchronizer { private static final long serialVersionUID = 4982264981922014374L; Sync(int count) { setState(count); } int getCount() { return getState(); } protected int tryAcquireShared(int acquires) { return (getState() == 0) ? 1 : -1; } protected boolean tryReleaseShared(int releases) { // Decrement count; signal when transition to zero for (;;) { int c = getState(); if (c == 0) return false; int nextc = c-1; if (compareAndSetState(c, nextc)) return nextc == 0; } } } //当前线程等待,知道计数器变为0 public void await() throws InterruptedException { sync.acquireSharedInterruptibly(1); } //某个线程调用,计数器-1 public void countDown() { sync.releaseShared(1); }
阅读全文
0 0
- CountDownLatch
- CountDownLatch
- CountDownLatch
- Countdownlatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch,
- CountDownLatch
- 制作圆角背景
- Linux&&shell 总结 四
- 单调栈
- 数据结构实验之链表五:单链表的拆分
- python实现找到给定列表中满足给定和的所有子列表,元素可重复使用
- CountDownLatch
- Jquery使用代理的方式绑定控件事件
- sqlzoo练习答案--SELECT names/zh
- QT类学习系列(2)
- iOS_NSPredicate的使用
- 著名的Facebook高管因担心机器人接管世界辞职隐居,你难道不怕吗?
- 算法学习笔记--1. Two Sum
- 【面试题】设计模式相关
- C#中String s1 = null;String s2 = “” 的区别