Synchronized
實(shí)現(xiàn)依賴JVM,隨著jdk版本升級(jí)從1.5的重量級(jí)鎖粗井,1.6的適應(yīng)自旋尔破、鎖消除、鎖粗化浇衬、輕量級(jí)鎖懒构、偏向鎖等效率提升,1.7+實(shí)現(xiàn)機(jī)制優(yōu)化耘擂。synchronized等待所不能被線程中斷胆剧,容易死鎖。
ReentrantLock
實(shí)現(xiàn)依賴cpu指令梳星,必須在finally中解鎖赞赖。引入公平鎖和非公平鎖(效率高)滚朵。
lock.lock() 忽略中斷鎖冤灾,lock.lockInterruptibly()響應(yīng)中斷鎖
lock.tryLock()輪詢鎖,lock.tryLock(Long timeout, TimeUnit unit)定時(shí)輪詢鎖
Semaphore
與reentrantLock相似辕近,支持多個(gè)臨界資源韵吨。acquire()與release()方法來獲得和釋放臨界資源。
AtomicInteger
運(yùn)算原子化移宅,比ReentrantLock效率高幾倍归粉。