之前已經(jīng)說道,JVM提供了synchronized關(guān)鍵字來實(shí)現(xiàn)對(duì)變量的同步訪問以及用wait和notify來實(shí)現(xiàn)線程間通信。在jdk1.5以后,JAVA提供了Lock類來實(shí)現(xiàn)和synchronized一樣的功能,并且還提供了Condition來顯示線程間通信。
Lock類是Java類來提供的功能,豐富的api使得Lock類的同步功能比synchronized的同步更強(qiáng)大。本文章的所有代碼均在Lock類例子的代碼
本文主要介紹一下內(nèi)容:

  1. Lock類

  2. Lock類其他功能

  3. Condition類

  4. Condition類其他功能

  5. 讀寫鎖

Lock類

Lock類實(shí)際上是一個(gè)接口,我們?cè)趯?shí)例化的時(shí)候?qū)嶋H上是實(shí)例化實(shí)現(xiàn)了該接口的類Lock lock = new ReentrantLock();。用synchronized的時(shí)候,synchronized可以修飾方法,或者對(duì)一段代碼塊進(jìn)行同步處理。
前面講過,針對(duì)需要同步處理的代碼設(shè)置對(duì)象監(jiān)視器,比整個(gè)方法用synchronized修飾要好。Lock類的用法也是這樣,通過Lock對(duì)象lock,用lock.lock來加鎖,用

網(wǎng)友評(píng)論