摘要:
关于算法 参加了41场LeetCode周赛,保三冲四,波动性太大了。菜还是一如既往的菜,薄弱点太多,复盘时不仅要知道如何做,更重要的是了解在这个过程中有没有哪些地方做的不好,方便下次注意和改进。 几点痛的领悟:1)首先考虑的是在时间复杂度允许的范围内,用可读性良好的代码实现。不要提前优化!提前优化可 阅读全文
摘要:
Ubuntu作为时间服务器,Windows去同步时间的配置过程 阅读全文
摘要:
介绍MySQL事务隔离级别与锁的关系 阅读全文
摘要:
1)读写锁支持非公平模式和公平模式;2)reader和writer都支持重入,且writer可以重入读锁,但reader不能重入写锁;3)写锁可降级为读锁,读锁不能升级为写锁;4)支持中断;5)写锁支持 Condition;6)提供方法来判断锁的持有和竞争状态 阅读全文
摘要:
ThreadLocal可以让一个对象是共享变量,统一设置初始值,但是每个线程对这个对象的修改都是互相独立的。 阅读全文
摘要:
CountdownLatch用于等待事件,是一次性的;countDown 递减计数器,表示有一个事件已经发生;await 等待计数器达到0,表示所有需要等待的时间已经发生。
CyclicBarrier用于等待其他线程,可重复使用;线程到达栅栏位置将调用 await 方法,这个方法会阻塞直到所有线程都到达栅栏位置;还可以在构造函数中传入 RUNNABLE,最后到达栅栏的线程执行它 阅读全文
摘要:
ReentrantLock实现了非公平锁和公平锁,默认使用非公平锁。非公平锁相对于公平锁的不同之处在于,非公平锁在lock过程中,会先进行一次CAS抢锁,抢锁失败才会去看state状态是否为0,为0的话再次CAS抢锁;而公平锁没有第一次的CAS抢锁,如果state为0还要再看CLH队列中是否有等待的线程,没有等待的线程才会CAS抢锁。 阅读全文
摘要:
约定 CLH 队列,在 AQS 的实现中也被称为同步队列(SyncQueue) 源码 Node类 static final class Node { // 共享模式和独占模式的标记 static final Node SHARED = new Node(); static final Node EX 阅读全文
摘要:
阻塞机制由 doAcquireShared 方法实现,唤醒机制由 doReleaseShared 方法实现 阅读全文
摘要:
阻塞机制由 acquireQueued 方法实现,唤醒机制由 unparkSuccessor 方法实现 阅读全文