java并发 15
-
05 2018年06月
AbstractQueuedSynchronizer详解
AQS简介AbstractQueuedSynchronizer简称AQS,即抽象的队列同步器,它是构建锁或者其他同步组件的基础框架(如ReentrantLock、ReentrantReadWriteLock、Semaphore等),JUC并发包的作者(Doug Lea)期望它能够成为实现大部分同步需
-
04 2018年06月
Semaphore信号量
信号量Semaphore是一个控制访问多个共享资源的计数器,和CountDownLatch一样,其本质上是一个“共享锁”。Semaphore介绍Semaphore在API是这么介绍的:一个计数信号量。从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前阻塞每一个acquire(),然后在获得该
-
29 2018年05月
volatile关键字
在java语言规范中对volatile的定义如下:Java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致地更新,线程应该确保通过排他锁单独获得这个变量。简单点来说就是一个变量如果用volatile修饰了,则java可以确保所有线程看到这个变量的值是一致,如果某个线程对volatile修
-
21 2018年05月
synchronized原理
在遇到多线程情况下使用最多的synchronized,但它是一个重量级的锁,相对于Lock,它会显得有点笨重,但是自从JDK1.6开始已经对synchronized进行了各种优化,并没有之前版本那么重,下面来看看synchronized的实现机制以及锁优化。基本使用synchronized可以保证方
-
14 2018年05月
java并发之ConcurrentHashMap
ConcurrentHashMap介绍因为ConcurrentHashMap支持并发操作,所以源码理解起来并不是很容易,尤其是JDK1.8的源码加入红黑树,本文分别分析JDK1.8和JDK1.7源码JDK1.8 中 ConcurrentHashMap 类取消了 Segment 分段锁,采用 CAS