码迷,mamicode.com
首页 >  
搜索关键字:aqs    ( 494个结果
AbstractQueuedSynchronized(AQS)学习笔记
AbstractQueuedSynchronized(AQS)是一个同步器框架,在实现锁的时候,一般会实现一个继承自AQS的内部类sync,作为我们的自定义同步器。以下这五个方法,在AQS中实现为直接抛出异常,这是我们自定义同步器需要重写的方法: ①isHeldExclusively():该线程是否 ...
分类:其他好文   时间:2016-06-26 22:26:57    阅读次数:807
Java并发编程总结3——AQS、ReentrantLock、ReentrantReadWriteLock
本文内容主要总结自《Java并发编程的艺术》第5章——Java中的锁。 一、AQS AbstractQueuedSynchronizer(简称AQS),队列同步器,是用来构建锁或者其他同步组建的基础框架。该类主要包括: 1、模式,分为共享和独占。 2、volatile int state,用来表示锁 ...
分类:编程语言   时间:2016-06-13 22:01:11    阅读次数:269
JUC源码分析13-locks-ReentrantReadWriteLock
ReentrantReadWriteLock基于AQS实现读写锁的同步: 1.利用共享模式实现读锁,独占模式实现写锁; 2.支持公平和非公平,非公平的情况下可能会出现读锁阻塞写锁的场景; 3.写锁阻塞写锁和读锁,读锁阻塞写锁; 4.写锁可以降级为读锁,读锁不能升级为写锁,只能先release再lock; 5.写锁支持condition条件; 6.读写锁都支持超时/中断lock; ...
分类:其他好文   时间:2016-05-18 18:02:27    阅读次数:190
【并发编程】AQS学习
一个简单的示例:package net.jcip.examples;import java.util.concurrent.locks.*;import net.jcip.annotations.*;/** * OneShotLatch * * Binary latch using Abstract... ...
分类:其他好文   时间:2016-05-13 07:42:27    阅读次数:196
JUC源码分析9-locks-ReentrantLock
ReentrantLock可重入锁,使用比synchronized方便灵活,可作为替代使用: 1.支持公平/不公平锁; 2.支持响应超时,响应中断; 3.支持condition; ReentrantLock实现了Lock接口,内部使用static类继承AQS实现独占式的api来实现这些功能,使用AQS的state来表示锁可重入次数: 之前学习AQS的时候说过请求和rele...
分类:其他好文   时间:2016-05-12 14:47:41    阅读次数:189
JUC源码分析8-locks-AQS-condition
AQS的conditionObject实现类似object的wait/notify/notify的功能,功能大概是: 1.object维护一个监视器和一个等待队列,condition对于一个lock可以有多个condition,对于每个condition维护一个条件队列; 2.提供wait/signal/signalall功能。 来个入门demo: public class Conditi...
分类:其他好文   时间:2016-05-12 14:41:04    阅读次数:217
JUC源码分析10-locks-CountDownLatch
上一次学习了ReetrantLock,是对AQS独占模式的,这次学习CountDownLatch,是共享模式api的实现。人生不死,学无止境。先看个demo吧: import java.util.concurrent.CountDownLatch; public class CountDownLatchTest { private static CountDownLatch ...
分类:其他好文   时间:2016-05-12 12:25:20    阅读次数:173
从JDK源码角度看java并发的原子性如何保证
JDK源码中,在研究AQS框架时,会发现很多地方都使用了CAS操作,在并发实现中CAS操作必须具备原子性,而且是硬件级别的原子性,java被隔离在硬件之上,明显力不从心,这时为了能直接操作操作系统层面,肯定要通过用C++编写的native本地方法来扩展实现。JDK提供了一个类来满足CAS的要求,sun.misc.Unsafe,从名字上可以大概知道它用于执行低级别、不安全的操作,AQS就是使用此类完...
分类:编程语言   时间:2016-05-10 11:04:27    阅读次数:195
JUC源码分析7-locks-AQS-共享模式
AQS中一定要记住2点: 1.处理流程: if(!请求成功) 加入队列 2.请求是对state的判断,AQS不关心你state表示什么,你可以表示状态也可以表示数量,由子类实现对请求的判断。将规则的判断和规则的处理分离,有点像模板模式。 先想想什么是独占什么是共享,举个栗子:独占就像大家拿号去排队体检,你拿号了发现前面还有n个人,没办法,等吧,然后你前面的人体检完了,医生就说,你通知下一...
分类:其他好文   时间:2016-05-07 10:05:20    阅读次数:133
JUC源码分析6-locks-AQS-独占模式
AbstractQueuedSynchronizer(下面简称AQS),javadoc说明: Provides a framework for implementing blocking locks and related synchronizers (semaphores, events, etc) that rely on  first-in-first-out (FIFO) wait que...
分类:其他好文   时间:2016-05-07 09:11:08    阅读次数:240
494条   上一页 1 ... 43 44 45 46 47 ... 50 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!