Synchronized and ReentrantLock
摘要:内置锁 内置锁不需要显式的获取和释放,任何一个对象都能作为一把内置锁。 当synchronized作用于普通方法时,锁对象是this; 当synchronized作用于静态方法时,锁对象是当前类的Class对象; 当synchronized作用于代码块时,锁对象是synchronized(obj)中
阅读全文
posted @
2018-09-26 19:28
溪水静幽
阅读(170)
推荐(0)
Compare And Swap
摘要:CAS是什么? CAS是英文单词CompareAndSwap的缩写,中文意思是:比较并替换。CAS需要有3个操作数:内存地址V,旧的预期值A,即将要更新的目标值B。 CAS指令执行时,当且仅当内存地址V的值与预期值A相等时,将内存地址V的值修改为B,否则就什么都不做。整个比较并替换的操作是一个原子操
阅读全文
posted @
2018-09-25 20:57
溪水静幽
阅读(1026)
推荐(0)
volatile详解
摘要:保证了共享变量的可见性。所谓可见性指的是,某个线程对变量进行操作后,其他线程能够读取到操作后的最新结果。 CPU通常不会直接与内存通信,内存中的数据首先会被读取到缓存中进行读写。当对声明了volatile的变量进行写操作时,JVM会向处理器发送一条Lock前缀的指令,表示将变量锁在的缓存行数据写回内
阅读全文
posted @
2018-09-25 19:42
溪水静幽
阅读(190)
推荐(0)
ThreadPoolExecutor详解
摘要:线程资源必须通过线程池提供,不允许在应用中自行显示创建线程。为什么呢? 使用线程池的好处是减少在创建和销毁线程上所消耗的时间以及系统资源开销,解决资源不足的问题。 如果不使用线程池,有可能会造成系统创建大量同类线程而导致消耗完内存或者“过度切换”的问题。 对线程进行一些维护和管理,比如定时开始,周期
阅读全文
posted @
2018-08-21 22:09
溪水静幽
阅读(386)
推荐(0)
ThreadLocal原理
摘要:实现思路: Thread类有一个类型为ThreadLocal.ThreadLocalMap的实例变量threadLocals,即每个线程有一个自己的ThreadLocalMap。ThreadLocalMap有自己的独立实现,可以简单地将它的key视作ThreadLocal,value为代码中放入的值
阅读全文
posted @
2018-05-05 23:25
溪水静幽
阅读(138)
推荐(0)