自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

骑着蜗牛向前跑的博客

一个耐力型选手。

  • 博客(2)
  • 资源 (1)
  • 收藏
  • 关注

原创 AQS源码简单理解三:解锁

上一篇博客写了AQS加锁过程,文章后面只是浅谈了下阻塞线程被唤醒后该怎么执行。这篇博客主要描述解锁过程,以及再深入看下阻塞线程被唤醒后怎么走的。解锁过程从 reentrantLock.unlock() 方法走到 release(int arg) 。解锁的核心代码如下:// AbstractQueuedSynchronizer.classpublic final boolean release(int arg) { // 是否解锁成功? if (tryRelease(arg)) {

2021-02-04 14:56:27 254 1

原创 AQS源码简单理解二:加锁

(手头的活忙完了,来补一篇博客)上篇提到多线程并发但却没有竞争的时候,AQS只是多执行了一行代码而已,没有线程队列,更没有重量级锁。所以它比优化前的synchronized() 效率高些。这篇主要介绍如果多线程且有竞争,AQS 是怎么处理的。AQS通过自旋、CAS、park 三种方式结合使用 ,尽量将多线程同步放在 JVM 层完成,实在搞不定了,再创建重量级锁实现多线程同步。加锁核心代码这里与公平锁为例(公平与非公平的区别在这里)。顺着 reentrantLock.lock() 一直往下走到 Ab

2021-02-03 20:50:17 211 2

log4j2 jdbc appender 实现将日志保存到 mysql。

log4j2 jdbc appender 实现将日志保存到 mysql。

2022-07-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除