摘要: 概念和意义 尝试获取锁的线程不会立即阻塞(no wait),而是采用循环的方式去尝试获取锁,这样的好处是减少线程上下文切换的消耗,缺点是循环消耗cpu unsafe中的源码 //unsafe.getAndAddInt putlic final int getAndAddInt(Object var1 阅读全文
posted @ 2021-04-18 15:11 wsZzz1997 阅读(58) 评论(0) 推荐(0) 编辑
摘要: ReentrantLock和synchronized默认都是非公平锁 顾名思义: 公平锁就是根据先来后到的顺序,给予申请的线程权力,不能插队 非公平锁就是不完全按照申请锁的顺序,给予每个线程相同的对待。 根据线程的优先级安排情况,也就是会出现插队现象 公平锁:ReentrantLock(true) 阅读全文
posted @ 2021-04-18 15:06 wsZzz1997 阅读(76) 评论(0) 推荐(0) 编辑
摘要: ReentrantLock和synchronized都是可重入锁 通俗来说就是拿着外层的锁,可以进入内部拥有相同锁的其他代码块。 可以拿多把锁,但是必须都解锁才能完全解开。 递归性质的上锁开锁,因此也叫递归锁。 阅读全文
posted @ 2021-04-18 14:58 wsZzz1997 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 读写锁 ReentrantReadWriteLock 读,可多线程读 写,只允许一个写 读读共存 读写不共存 写写不共存 写操作:原子+独占,整个过程必须是一个完整的统一体,中间不需被分割打断 // 资源类 class Mycache{ // 缓存的一般加volatile private volat 阅读全文
posted @ 2021-04-18 14:55 wsZzz1997 阅读(25) 评论(0) 推荐(0) 编辑
摘要: CountDownLatch 每次当线程调用countDownLatch.countDown()方法时,会对计数器减1,减到0,countDownLatch.await()放行 public class CountDownLatchTest { public static void main(Str 阅读全文
posted @ 2021-04-18 14:52 wsZzz1997 阅读(42) 评论(0) 推荐(0) 编辑