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