2011-05-30 116 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实际上使用与第一个示例类似的内部锁定。因此他们不会有明显的变化。