2012-09-11 31 views
3

我正在閱讀操作系統,我遇到了幾個進程間通信問題。這些可以通過使用monitor概念來解決,java通過​​關鍵字提供。java中的synchronized關鍵字是如何實現的?

我想知道​​關鍵字是如何實現的?我試圖看看源代碼,但無法找到它。​​是否正在使用像downup(信號量基本上使用)來監視鎖的系統調用?

JVM在這個過程中有幫助嗎?

我是Java的新手,我希望知道在我進入java中的線程概念之前事情是如何工作的。

在此先感謝。

+0

請參閱http://stackoverflow.com/questions/1898374/does-the-jvm-create-a-mutex-for-every-object-in-order-to-implement-the-synchron – Raedwald

+0

可能的重複[JVM如何確保只有一個線程可以獲取對象的鎖?](http://stackoverflow.com/questions/28344338/how-does-jvm-make-sure-only-one-thread-can-acquire鎖定對象) – Raedwald

回答

5

如何實現同步沒有定義,只有它是如何工作的。在許多JVM中,它的優化行爲是相當複雜的(例如,它試圖避免進行系統調用,因爲它們相對較慢)。例如,JIT可以結合或消除與synchronized關鍵字的鎖定(如果它確定的話)這可以做到。

+0

你的意思是沒有系統調用的幫助,Java會實現這個功能? – sriram

+0

JIT生成實現此功能的本機代碼。它通常會鎖定一段時間,並使系統時間回退。它不會像現在這樣調用現有代碼。 –

+0

感謝您的回答。 – sriram

相關問題