- 博客(5)
- 资源 (1)
- 收藏
- 关注
原创 JDK源码之ReentrantLock源码分析
ReentrantLock类似于synchronized是一种独占式锁(悲观锁),是基于AQS实现的轻量级锁,相比于synchronized优点在于: 可自由选择锁的获取方式:公平锁和非公平锁 支持可重入锁,即一个线程可以多次获取锁 支持设置获取锁的持有时间 通过构造方法可以看到提供两种模式,默认为非公平锁 //非公平锁 public ReentrantLock() { ...
2019-04-24 20:17:21 259
原创 同步队列器AQS之condition等待队列的实现分析
我们知道每个Java对象都对应有一个监视器,此监视器用来实现线程的唤醒、通知等操作,对应Lock来说基于jdk也实现了类似的唤醒及通知的接口Condition接口,这里说明一下上一章节中同步队列器AQS的实现原理使用大量篇幅讲解了同步队列器的原理,而Condition是等待队列,下面通过BoundedBuffer(有界缓存)来分析一下使用场景 /** *此类创建了两个conditi...
2019-04-24 16:27:04 847
原创 同步队列器AQS的实现原理
Java中的锁一般分为两种,一种是synchronized关键字,它是基于底层CPU指令实现的锁,另外一种是Lock锁,是基于jdk实现的一种锁,传统的synchronized是一个重量级锁,缺点是有多个线程获取锁时,获取失败的线程会进入阻塞状态,成功获取锁的线程在处理完逻辑后会通知阻塞态的线程,这时候是随机挑选的属于非公平锁,而lock锁,比如ReentrantLock在默认情况下唤...
2019-04-18 20:21:16 755
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人