2010-01-14 39 views
1

我只是學習Java,我發現Java文檔/書籍放在非常強調同步。我已經閱讀了很多c#docs/books,並且你沒有看到這個話題的重點。c#和java是否有相同的同步問題/概念?

請問C#手柄鎖定/同步不同,或者說工作的事情不同的Web應用程序(應用程序池,IIS,CLR VERUS容器/ JVM/tomcat的)?

回答

7

lock和​​大致相同,雖然它們的實現方式有些不同 - 特別是在C#中,lock只是調用Monitor.Enter/Exit的語法糖,而在Java中沒有庫的等價物。

C#不具有同步的方法,雖然可以使用[MethodImpl(MethodImplOptions.Synchronized)]實現幾乎相同的效果。 (我覺得有一些細微的差別,但他們大致相同。)我不建議在任何語言中使用這一點,但是 - 私人鎖鎖代替。在.NET和Java中的其他併發庫支持進一步分離--Pettern.wait/notify/notifyAll和Monitor.Wait/Pulse/PulseAll的基本類似,但更高級別的支持是相當不同的。

的內存模型是微妙的不同 - 如果你不是想不鎖定它們也非常接近的工作,但正確的無鎖代碼將在.NET和Java不同。

不太確定如何回答您的Web應用程序點...

+0

實際上,C#確實有同步方法。 http://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.methodimploptions.aspx – SLaks 2010-01-14 13:51:36

+0

不是在語言 - 有屬性的支持,不可否認,但它不是語言的一部分。將編輯。 – 2010-01-14 13:52:14