java 多線程知識梳理2

來源:互聯網
上載者:User

標籤:

ReentrantLock和synchronized的選擇

1 synchronized的弊端,簡化了代碼工作,並且與異常處理操作實現了很好的互動,但是表現不夠靈活,對線程式控制制較小,比如無法中斷等待的線程,或者無法在請求擷取鎖時無限的等待,也沒法實現非阻塞結構的加鎖規則。

2 reentrantlock, java5.0以後才引入,實現了Lock 介面,提供了與synchronized相同的互斥性和記憶體可見度。在java5.0裡面效能優勢比內建鎖明顯,java6.0裡面差不多,是內建鎖的補充,不是替代,

public interfance Lock{

void lock();

void lockInterruptibly() throws InterruptedException;//可中斷的所擷取操作

boolean tryLock();//輪詢鎖,避免死結的發生

boolean tryLock(Long timeout, TimeUnit unit);//定時鎖,避免死結的發生

void unlock();

Condition newCondition();

}

使用標準

Lock lock = new reentrantLock()

......

lock.lock();

try{

}catch(){

//執行更新操作

}finally{

lock.unlock();

}

tryLock,比如同時需要擷取兩個對象的鎖才能開始執行業務,

if(alock.tryLock())

try{

  if(block.tryLock())

  try{

    //執行業務操作

  }catch{

  }finally{

  block.unlock();

  }

}catch{

}finally{

alock.unlock();

}

3 reentrantReadWriteLock 讀寫鎖,一個資源可以被多個讀操作訪問,或者被一個寫操作訪問,但兩者不能同時進行。他允許多個執行讀操作的線程訪問資料結構,能有效提高程式效能。

pubilc interface ReadWriteLock(){

Lock readLock();

Lock writeLovk();}

基於讀寫鎖封裝map:

public class ReadWriteMap{

private final Map<K,V> map;

private final ReadWriteLock lock =  new ReentrantReadWriteLock();

private final Lock r = lock.readLock();

private final Lock w = lock.writeLock();

public ReadWriteMap(Map<K,V> map){

this.map=map;

}

public V put(K key,V value){

w.lock();

try{

return map.put(key,value);

}catch{

}finally{

w.unlock();

}

public V get(K key){

r.lock();

try{

return get(key)

}catch{

}finally{

r.unlock();

}

}

java 多線程知識梳理2

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.