您好,登錄后才能下訂單哦!
小編給大家分享一下Java中Lock原理的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
1.SpringMVC,Spring Web MVC是一種基于Java的實現(xiàn)了Web MVC設(shè)計模式的請求驅(qū)動類型的輕量級Web框架。2.Shiro,Apache Shiro是Java的一個安全框架。3.Mybatis,MyBatis 是支持普通 SQL查詢,存儲過程和高級映射的優(yōu)秀持久層框架。4.Dubbo,Dubbo是一個分布式服務(wù)框架。5.Maven,Maven是個項目管理和構(gòu)建自動化工具。6.RabbitMQ,RabbitMQ是用Erlang實現(xiàn)的一個高并發(fā)高可靠AMQP消息隊列服務(wù)器。7.Ehcache,EhCache 是一個純Java的進(jìn)程內(nèi)緩存框架。
本教程操作環(huán)境:windows7系統(tǒng)、java10版,DELL G3電腦。
1.ReentrantLock的調(diào)用過程
/** * Creates an instance of {@code ReentrantLock}. * This is equivalent to using {@code ReentrantLock(false)}. */ public ReentrantLock() { sync = new NonfairSync(); }
經(jīng)過觀察ReentrantLock把所有Lock接口的操作都委派到一個Sync類上,該類繼承了AbstractQueuedSynchronizer:
static abstract class Sync extends AbstractQueuedSynchronizer
Sync又有兩個子類:
final static class NonfairSync extends Sync final static class FairSync extends Sync
2.Reentrant.lock()調(diào)用默認(rèn)非公平鎖
非公平鎖:比較粗魯,上來就直接嘗試占有鎖,如果嘗試失敗,就再采用類似公平鎖那種方式。
通過上面調(diào)用過程及AbstractQueuedSynchronizer的注釋可以發(fā)現(xiàn),AbstractQueuedSynchronizer中抽象了絕大多數(shù)Lock的功能,而只把tryAcquire方法延遲到子類中實現(xiàn)。tryAcquire方法的語義在于用具體子類判斷請求線程是否可以獲得鎖,無論成功與否AbstractQueuedSynchronizer都將處理后面的流程。
在對于lock鎖的使用上,很多人只是掌握了最基礎(chǔ)的方法,但是對實現(xiàn)的過程不是很清楚。這里我們對lock鎖功能的實現(xiàn)進(jìn)行分析,以ReentrantLock為例,分析它的鎖類型,并對相關(guān)的調(diào)用方法進(jìn)行展示。
以上是“Java中Lock原理的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。