摘要: put的全程操作: (1)检查当前table是否初始化。如果没有初始化,首先初始化。设置sizeCtl为-1;然后初始化一个大小为16的数组。 (2)当sizeCtl为负数时,表示结构正在发生变化,所以此时其他线程的操作都会被阻塞,直到sizeCtl变回0; (3)初始化之后,put值。 (4)如果 阅读全文
posted @ 2020-02-21 16:13 碧落君 阅读(174) 评论(0) 推荐(0) 编辑
摘要: AQS是jdk层面实现的锁。 主要依靠同步队列和条件队列实现原理。 我们从一个实际的场景出发去讲一下这个原理。 1、线程A,B,C想要抢占一个资源做操作; 2、线程A先得头筹获得了对象的锁。在它持有资源的同时,其他线程就会被阻塞,依次加入到同步队列中去,顺序为B,C; 3、并且每一个Node入队都会 阅读全文
posted @ 2020-02-21 14:45 碧落君 阅读(134) 评论(0) 推荐(0) 编辑