Lock接口 锁是用来控制多个线程访问共享资源的方式,锁能够防止多个线程同时访问共享资源。在Lock接口出现之前,Java是靠synchronized关键字实现锁功能的。在Java SE5后,并发包中新增了Lock接口用来实现锁功能,Lock在使用时需要显式地获取和释放锁。虽然缺少隐式获取锁和释放锁 ...
分类:
编程语言 时间:
2017-10-11 14:02:48
阅读次数:
191
一、概述: Java纪年1.5年,ReentrantReadWriteLock诞生于JUC,此后,国人一般称它为读写锁。人如其名,他就是一个可重入锁,同时他还是一个读写锁 a)跟ReentrantLock并没有任何的亲属关系 因为ReentrantReadWriteLock在命名上跟Reentran ...
分类:
其他好文 时间:
2017-09-07 16:14:05
阅读次数:
191
原文链接:http://blog.csdn.net/zteny/article/details/54919765 一、简介 1.AQS AQS是AbstractQueuedSynchronizer的简写,直白的翻译:抽象队列同步器,jdk1.5后出现 Provides a framework for ...
分类:
其他好文 时间:
2017-09-06 12:58:00
阅读次数:
180
java语言天生有一个 先行发生原则,无须借助任何同步器就存在 这是判断线程是否存在竞争,线程是否安全的主要依据, 1、程序次序规则:在一个线程内,书写在前面的代码先行发生于后面的。确切地说应该是,按照程序的控制流顺序,因为存在一些分支结构。 2、管程锁定规则。一个unlock操作先行发生于后面对同 ...
分类:
编程语言 时间:
2017-09-02 00:17:10
阅读次数:
196
简介 提供了一个基于FIFO队列,可以用于构建锁或者其他相关同步装置的基础框架。该同步器(以下简称同步器)利用了一个int来表示状态,期望它能够成为实现大部分同步需求的基础。使用的方法是继承,子类通过继承同步器并需要实现它的方法来管理其状态,管理的方式就是通过类似acquire和release的方式 ...
分类:
编程语言 时间:
2017-08-17 20:22:39
阅读次数:
205
目录 1.引子 2.AQS架构设计原理 3.AQS源码实现 4.简单应用 5.总结 正文分割线 一、引子 Doug Lea在JSR166中建立了一个小框架,AbstractQueuedSynchronizer同步器框架(AQS)。这个框架为构造同步器提供一种通用的机制,并且被j.u.c包中大部分类使 ...
分类:
其他好文 时间:
2017-07-26 22:15:15
阅读次数:
346
目录 1 基本实现原理 1.1 如何使用 1.2 设计思想 2 自定义同步器 2.1 同步器代码实现 2.2 同步器代码测试 3 源码分析 3.1 Node结点 3.2 独占式 3.3 共享式 4 总结 Java并发包(JUC)中提供了很多并发工具,这其中,很多我们耳熟能详的并发工具,譬如Reent ...
分类:
编程语言 时间:
2017-07-24 14:48:33
阅读次数:
271
近期总体过了下AQS的结构。也在网上看了一些讲AQS的文章,大部分的文章都是泛泛而谈。又一次看了下AQS的代码,把一些新的要点拿出来说一说。 AQS是一个管程。提供了一个主要的同步器的能力,包括了一个状态,改动状态的原子操作。以及同步线程的一系列操作。它是CLHLock的变种,CLHLock是一个基 ...
分类:
编程语言 时间:
2017-07-21 18:15:28
阅读次数:
234
CAS,Compare and Swap即比较并替换,设计并发算法时常用到的一种技术,Doug lea大神在java同步器中大量使用了CAS技术,鬼斧神工的实现了多线程执行的安全性。 目前的处理器基本都支持CAS,只不过不同的厂家的实现不一样罢了。CAS有三个操作数:内存值V、旧的预期值A、要修改的 ...
分类:
编程语言 时间:
2017-07-09 19:37:41
阅读次数:
135
应该将子类定义为非公共内部帮助器类,一般并发包类用内部类Sync sync来继承并实现。为实现依赖于先进先出 (FIFO) 等待队列的阻塞锁和相关同步器(信号量、事件,等等)提供一个框架。此类的设计目标是成为依靠单个原子 int 值来表示状态的大多数同步器的一个有用基础。子类必须定义重写此状态的受保... ...
分类:
其他好文 时间:
2017-07-08 17:45:51
阅读次数:
187