2011-05-30 155 views
1

有誰知道兩個鎖定結構中的哪一個更快? 我:BoundedSemaphore信號量vs標準互斥量

private static final Object mutex = new Object(); 

void method() { 
    synchronized(mutex) { 
     // code 
    } 
} 

VS:

BoundedSemaphore semaphore = new BoundedSemaphore(1); 

void method() { 
    semaphore.take(); 

    try{ 
     //code 
    } finally { 
     semaphore.release(); 
    } 
} 

謝謝大家。 馬特

+1

標準Java中沒有BoundedSemaphore類。這個班從哪裏來? – 2011-05-30 15:46:15

+0

對不起,這是來自這個網站:http://tutorials.jenkov.com/java-concurrency/semaphores.html#bounded不知道是否仍然有一個有效的比較,因爲我發佈之前太快閱讀該網站。 – 2011-05-30 17:13:50

+0

'synchronized'塊是可重入的,但'BoundedSemaphore'不是。 – 2011-05-31 06:50:28

回答

0

實際上他們的表現是相同的。您示例中的BoundedSemaphore實際上使用與第一個示例類似的內部鎖定。因此他們不會有明顯的變化。