java并发编程中,经常会看到 volatile 关键字。今天就让我们来盘一盘它。 volatile相关定义 java语言规范对于 volati...
ThreadLocal是什么 提供线程局部变量,一个线程的局部变量在多个线程中有独立的副本,特点有:简单(开箱即用),快速(无额外开销),安全(...
Java 内存模型 从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系: 线程之间的共享变量存储在主内存(Main Memory)中每个线...
偏向锁 轻量级锁 重量级锁 锁的状态总共有四种:无锁状态、偏向锁、轻量级锁和重量级锁。 随着锁的竞争,锁可以从偏向锁升级到轻量级锁,再升级的重量...
自旋锁 典型的自旋锁:CAS 当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后不断的判断锁是否能够被成功获取,直到...
分段锁 典型的乐观锁:ConcurrentHashMap ConcurrentHashMap分段锁代替HashTable的独占锁。 Concur...
悲观锁 典型的悲观锁:synchronzied、vector、hashtable 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每...
互斥锁 典型的互斥锁:synchronzied 一次最多只能有一个线程持有的锁。如Java的Lock。 共享资源的使用是互斥的,即一个线程获得资...
独享锁与共享锁也是通过AQS来实现的,通过实现不同的方法,来实现独享或者共享。对于Synchronized而言,是独享锁。 独占锁 典型的独占锁...
文集作者