一个简单的示例:

  1. package net.jcip.examples;
  2. import java.util.concurrent.locks.*;
  3. import net.jcip.annotations.*;
  4. /**
  5.  * OneShotLatch
  6.  * <p/>
  7.  * Binary latch using AbstractQueuedSynchronizer
  8.  *
  9.  * @author Brian Goetz and Tim Peierls
  10.  */
  11. @ThreadSafe
  12. public class OneShotLatch {
  13.     private final Sync sync = new Sync(); //基于委托的方式
  14.     public void signal() {
  15.         sync.releaseShared(0); ////会调用 tryAcquireShared
  16.     }
  17.     public void await() throws InterruptedException {
  18.         sync.acquireSharedInterruptibly(0); //会调用 tryAcquireShared
  19.     }
  20.     private class Sync extends AbstractQueuedSynchronizer { //内部私有类
  21.         protected int tryAcquireShared(int ignored) {
  22.             // Succeed if latch is open (state == 1), else fail
  23.             return (getState() == 1) ? 1 : -1;
  24.         }
  25.         protected boolean tryReleaseShared(int ignored) {
  26.             setState(1); // Latch is now open
  27.             return true; // Other threads may now be able to acquire
  28.         }
  29.     }
  30. }






附件列表

【并发编程】AQS学习的更多相关文章

  1. Java并发编程深入学习

    上周的面试中,被问及了几个并发开发的问题,自己回答的都不是很系统和全面,可以说是"头皮发麻",哈哈.因此果断购入<Java并发编程的艺术>一书,该书内容主要是对ifev ...

  2. Java并发编程快速学习

    上周的面试中,被问及了几个关于Java并发编程的问题,自己回答的都不是很系统和全面,可以说是"头皮发麻",哈哈.因此果断购入<Java并发编程的艺术>一书,学习后的体会 ...

  3. Java并发编程--AQS

    概述 抽象队列同步器(AbstractQueuedSynchronizer,简称AQS)是用来构建锁或者其他同步组件的基础框架,它使用一个整型的volatile变量(命名为state)来维护同步状态, ...

  4. 【java并发编程艺术学习】(三)第二章 java并发机制的底层实现原理 学习记录(一) volatile

    章节介绍 这一章节主要学习java并发机制的底层实现原理.主要学习volatile.synchronized和原子操作的实现原理.Java中的大部分容器和框架都依赖于此. Java代码 ==经过编译= ...

  5. 【java并发编程艺术学习】(二)第一章 java并发编程的挑战

    章节介绍 主要介绍并发编程时间中可能遇到的问题,以及如何解决. 主要问题 1.上下文切换问题 时间片是cpu分配给每个线程的时间,时间片非常短. cpu通过时间片分配算法来循环执行任务,当前任务执行一 ...

  6. 【java并发编程艺术学习】(一)初衷、感想与笔记目录

    不忘初心,方得始终. 学习java编程这么长时间,自认为在项目功能需求开发中没啥问题,但是之前的几次面试和跟一些勤奋的或者小牛.大牛级别的人的接触中,才发现自己的无知与浅薄. 学习总得有个方向吧,现阶 ...

  7. java并发编程实战学习(3)--基础构建模块

    转自:java并发编程实战 5.3阻塞队列和生产者-消费者模式 BlockingQueue阻塞队列提供可阻塞的put和take方法,以及支持定时的offer和poll方法.如果队列已经满了,那么put ...

  8. 《Java虚拟机并发编程》学习笔记

    对<Java虚拟机并发编程>这本书真的是相见恨晚.以前对并发编程只是懂个皮毛,这本书让我对并发编程有了一个全新的认识.所以把书上的知识点做下笔记,以便以后复习使用. 并发与并行 仔细说来, ...

  9. Python并发编程之学习异步IO框架:asyncio 中篇(十)

    大家好,并发编程 进入第十章.好了,今天的内容其实还挺多的,我准备了三天,到今天才整理完毕.希望大家看完,有所收获的,能给小明一个赞.这就是对小明最大的鼓励了.为了更好地衔接这一节,我们先来回顾一下上 ...

  10. java 多线程——并发编程模型 学习笔记

                                                                                                 并发编程模型 ...

随机推荐

  1. Single Number-C++中的异或

    Single Number Given an array of integers, every element appears twice except for one. Find that sing ...

  2. 代码管理工具TortoiseSVN

    . TortoiseSVN TortoiseSVN与Windows Explorer集成可称为是一款功能齐全的SVN客户端,允许你管理SVN项目.其自身就包含客户端无需再安装额外的SVN客户端.它还提 ...

  3. C#部分---函数添加基本格式;

    格式1:没有参数,没有返回值 (无参无返) 添加函数: /// <summary> /// 累加求和的方法,没有参数,没有返回值 /// </summary> public v ...

  4. JavaWeb学习记录(四)——日期和数字的格式转换

    一.Date转为String (1) public class DateUtil {    private static SimpleDateFormat sdf = new SimpleDateFo ...

  5. 作业:用HTML制作简历

    代码为: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...

  6. JAVA常用关键字

    Java 中常用关键字: 一一解释(先以印象注明含义,若有错误或未填写的待用到后补充.更新):(蓝色为不确定部分) abstract : 虚类 boolean : 类型定义——布尔型 break : ...

  7. 如何更新Android SDK和Build Tool

    1. 运行命令 android 2. 勾选并安装需要的版本 3. 完成!

  8. Google Java Style Guide

    https://google.github.io/styleguide/javaguide.html   Table of Contents 1 Introduction 1.1 Terminolog ...

  9. kmeans算法

    # coding:utf-8 import numpy as np import matplotlib.pyplot as plt def dis(x, y): #计算距离 return np.sum ...

  10. C#中调用C++的dll的参数为指针类型的导出函数(包括二级指针的情况)

    严格来说这篇文章算不上C++范围的,不过还是挂了点边,还是在自己的blog中记录一下吧. C++中使用指针是家常便饭了,也非常的好用,这也是我之所以喜欢C++的原因之一.但是在C#中就强调托管的概念了 ...