2014-03-24 86 views
5

Java中C#鎖定的等價物?Java中C#鎖定的等價物?

例如:

public int Next() { 
    lock (this) { 
    return NextUnsynchronized(); 
    } 
} 

我如何端口這個C#方法的Java?

+0

http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/Lock.html – 0x90

回答

15
public int Next() { 
    synchronized (this) { 
     return NextUnsynchronized(); 
    } 
} 

就是這樣。接下來的代碼更好。

public synchronized int Next() { 
    return NextUnsynchronized(); 
} 
+5

這將是最好不要鎖定'this'在大多數情況下...... –

+0

同步方法似乎是一個不錯的解決方案! – user3111311

+0

@ user3111311請選擇answer> o < – ikh

0
java.util.concurrent.locks.Lock  
lock.lock(); 

    int newCount = ++count; 
    lock.unlock(); 
+0

除非你需要嘗試/最後,並使用'synchronized'在這裏更接近...... –

+0

在你的例子中顯然不需要,但在一般情況下,你應該寫{try} finally {lock.unlock ();} –