Sychronized
-
Java中的一个关键字
-
自动加锁和释放锁
-
JVM层面的锁
-
非公平锁
-
锁的是对象,锁信息保存在对象头中
sychronized(Object)
-
底层有锁升级过程
ReentrantLock
-
JDK提供的一个类
-
需要手动加锁与释放锁
ReentrantLock lock = new ReentrantLock(); lock.lock(); ... lock.unlock();
-
API层面的锁
-
公平锁或者非公平锁
public ReentrantLock() { sync = new NonfairSync(); } public ReentrantLock(boolean fair) { sync = fair ? new FairSync() : new NonfairSync(); }
-
state标识锁状态
/** * The synchronization state. */ private volatile int state;
-
没有锁升级过程