`java.util.concurrent.locks.AbstractQueuedSynchronizer` 、`Semaphore CountDownLatch Sync AbstractQueuedSynchronizer`。 AQS 核心是通过一个共享变量来同步状态,变量的状态由子类去维护, ...
分类:
其他好文 时间:
2019-09-06 23:09:49
阅读次数:
108
加锁目的:由于线程执行的过程是不可控的,所以需要采用同步机制来协同对对象可变状态的访问。 加锁方式:java锁分为两种--显示锁和隐示锁,本质区别在于显示锁需要的是程序员自己手动的进行加锁与解锁如ReentrantLock需要进行lock与unlock。而隐式锁则是Synchronized,jvm内 ...
分类:
其他好文 时间:
2019-09-02 17:03:05
阅读次数:
82
1.实例:3个线程交替打印1,2,3一定次数 代码如下: 运行结果: 2.源码分析 首先3个线程启动后会执行lock方法,这个方法底层是AQS实现的。 ReentrantLock默认非公平锁,所以lock方法会首先尝试通过CAS直接获取锁,如果获取失败执行acquire(1)函数。 这里只有一个线程 ...
分类:
其他好文 时间:
2019-09-01 16:39:37
阅读次数:
58
基本类: AtomicInteger AtomicLong "AtomicBoolean" 数组类型: AtomicIntegerArray AtomicLongArray AtomicReferenceArray 介绍 由于在多线程条件下,如果对共享变量修改容易造成数据不一致的情况,所以对于共享变 ...
分类:
其他好文 时间:
2019-08-22 00:39:16
阅读次数:
91
1、LockSupport LockSupport类的核心方法其实就两个:park()和unark(),其中park()方法用来阻塞当前调用线程,unpark()方法用于唤醒指定线程 LockSupport类使用了一种名为Permit(许可)的概念来做到阻塞和唤醒线程的功能,可以把许可看成是一种(0 ...
分类:
编程语言 时间:
2019-08-21 15:13:48
阅读次数:
142
同学被阿里大佬内推阿里Lazada事业部面试,以下是面经 阿里电面 mysql:索引原理、索引优化、如何设计索引、按索引分页、索引失效、mysql事务如何实现、事务隔离级别、mysql默认隔离级别、可重复读 redis:基本类型、如何设置过期及redis如何查找过期的key、淘汰策略、缓存穿透问题、 ...
分类:
其他好文 时间:
2019-08-13 15:17:44
阅读次数:
118
基于jdk1.8AQS源码分析,学习底层数据结构、算法、设计理念、进制转换、代码艺术、并发编程、独占共享锁的乐趣
分类:
其他好文 时间:
2019-08-09 09:21:13
阅读次数:
80
CountDownLatch 通常情况下,countDown如下调用 看一下countDown方法: AQS中releaseShared方法如下: CountDownLatch中tryReleaseShared方法如下: 来看doReleaseShared()方法: 不过尴尬的是,CountDown ...
分类:
其他好文 时间:
2019-08-08 23:11:25
阅读次数:
97
基于AQS的前世今生,来学习并发工具类CountDownLatch。本文将从CountDownLatch的应用场景、源码原理解析来学习这个并发工具类。 1、 应用场景 CountDownLatch是并发包中用来控制一个或者多个线程等待其他线程完成操作的并发工具类。现以工作中的一个场景来描述下Coun ...
分类:
编程语言 时间:
2019-07-30 11:06:35
阅读次数:
134
基于AQS的前世今生,来学习并发工具类Semaphore。本文将从Semaphore的应用场景、源码原理解析来学习这个并发工具类。 1、 应用场景 Semaphore用来控制同时访问某个特定资源的操作数量,或者同时执行某个指定操作的数量。还可以用来实现某种资源池限制,或者对容器施加边界。 1.1 当 ...
分类:
编程语言 时间:
2019-07-30 10:57:45
阅读次数:
137