2008-10-20 62 views

回答

9

根据该站点:http://en.csharp-online.net/CSharp_FAQ:_What_is_the_difference_between_CSharp_lock_and_Java_synchronized,C#lock和Java​​码块是 “语义上相同”,而对于方法,Java使用​​而C#使用一个属性:[MethodImpl(MethodImplOptions.Synchronized)]

+0

不能,“语义相同”是我需要听到的...以及是否有任何“陷阱”,但该页似乎是很清楚。谢谢。 Stackoverflow是我的新Google。 ;) – Epaga 2008-10-20 07:32:19

5

一个有趣的差异不包括在张贴Keeg链接:据我所知,没有相当的方法在Java中对.NET的Monitor.EnterMonitor.Exit,其中C#lock陈述归结为调用。这意味着您不能执行Monitor.TryEnter的等效操作 - 尽管当然java.util.concurrent.locks包(从1.5开始)具有各种可用的更多功能的锁。

-1

我java你不必担心锁定你拥有的公共类型。

在.NET中,have to

更新:这是你自己的类型。锁定你不拥有的公共类型在任何语言中都是不好的:)

+2

不,在Java中锁定公共引用也是一个坏主意。什么让你觉得在Java中没关系? – 2008-10-20 08:29:27