05 2021 档案

摘要:ThreadLocal可以让一个对象是共享变量,统一设置初始值,但是每个线程对这个对象的修改都是互相独立的。 阅读全文
posted @ 2021-05-16 19:37 sjmuvx 阅读(127) 评论(0) 推荐(0) 编辑
摘要:CountdownLatch用于等待事件,是一次性的;countDown 递减计数器,表示有一个事件已经发生;await 等待计数器达到0,表示所有需要等待的时间已经发生。 CyclicBarrier用于等待其他线程,可重复使用;线程到达栅栏位置将调用 await 方法,这个方法会阻塞直到所有线程都到达栅栏位置;还可以在构造函数中传入 RUNNABLE,最后到达栅栏的线程执行它 阅读全文
posted @ 2021-05-12 22:39 sjmuvx 阅读(50) 评论(0) 推荐(0) 编辑
摘要:ReentrantLock实现了非公平锁和公平锁,默认使用非公平锁。非公平锁相对于公平锁的不同之处在于,非公平锁在lock过程中,会先进行一次CAS抢锁,抢锁失败才会去看state状态是否为0,为0的话再次CAS抢锁;而公平锁没有第一次的CAS抢锁,如果state为0还要再看CLH队列中是否有等待的线程,没有等待的线程才会CAS抢锁。 阅读全文
posted @ 2021-05-10 22:38 sjmuvx 阅读(48) 评论(0) 推荐(0) 编辑
摘要:约定 CLH 队列,在 AQS 的实现中也被称为同步队列(SyncQueue) 源码 Node类 static final class Node { // 共享模式和独占模式的标记 static final Node SHARED = new Node(); static final Node EX 阅读全文
posted @ 2021-05-09 15:11 sjmuvx 阅读(135) 评论(0) 推荐(0) 编辑
摘要:阻塞机制由 doAcquireShared 方法实现,唤醒机制由 doReleaseShared 方法实现 阅读全文
posted @ 2021-05-07 22:39 sjmuvx 阅读(276) 评论(0) 推荐(1) 编辑
摘要:阻塞机制由 acquireQueued 方法实现,唤醒机制由 unparkSuccessor 方法实现 阅读全文
posted @ 2021-05-06 21:35 sjmuvx 阅读(91) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示