JAVA笔记之JUC
[听得时光枕水眠]
记录自己学习工作中出现的问题以及解决问题的方法记录,以便日后翻阅。
学习一门新技术的时候,最好的方式就是去官网,看官方文档和源码。基础不牢,地动山摇。基础一牢,全部推倒
展开
-
学习笔记总结之JAVA JUC ReentrantReadWriteLock(四)
读锁重入怎么玩:读锁的重入不能仿照写锁的方式,因为写锁属于互斥锁,同一时间只会有一个线程持有写锁,但是读锁是共享锁,同一时间会有多个线程持有读锁。所以每个获取到读锁的线程,记录锁重入的方式都是基于自己的ThreadLocal存储锁重入次数。写锁重入怎么玩:因为写操作和其他操作是互斥的,代表同一时间,只有一个线程持有着写锁,只要锁重入,就对低位+1即可。还记录了最后一个拿到读锁的线程的重入次数,交给cachedHoldCounter属性标识,可以避免频繁的在锁重入时,从TL中获取。4.1 读锁的加锁操作。原创 2023-06-07 21:19:25 · 316 阅读 · 0 评论 -
学习笔记总结之JAVA JUC ReentrantLock(三)
【代码】学习笔记总结之JAVA JUC ReentrantLock(三)原创 2023-06-07 17:19:05 · 49 阅读 · 0 评论 -
学习笔记总结之JAVA JUC(二)
子类只需要实现自己的获取锁逻辑和释放锁逻辑即可,至于排队阻塞等待、唤醒机制均由AQS来完成。原创 2023-06-07 16:17:01 · 56 阅读 · 0 评论 -
学习笔记总结之JAVA JUC(一)
优点:适用于执行操作较少切快的操作,自旋马上就能获得锁,这样的话就不会太消耗CPU资源。缺点:占用CPU不干事,导致性能障碍,占着茅坑不拉屎。=>两个变量有点冗余,直接用int state表示锁状态和重入次数。0无锁,大于零表示锁重入次数 提示:1为重入一次,也即只加锁一次。解决多线程同步问题,给java开发者提供了便利的函数、功能和结构。自旋锁:线程不停的执行某段代码,直到条件满足或次数达到限制。为了实现锁重入,要记录锁重入的次数:int times;阻塞:达不到条件,告诉操作系统,把我阻塞。原创 2023-06-07 16:05:16 · 158 阅读 · 0 评论