14

这两个关键字是否具有完全相同的效果,或者我应该注意什么?

4

3 回答 3

10

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

于 2008-10-20T07:25:05.117 回答
5

Keeg 发布的链接中没有涵盖一个有趣的区别:据我所知,Java 中没有针对 .NET 的Monitor.EnterMonitor.Exit的等效方法调用,C#语句归结为。这意味着您也不能执行与Monitor.TryEnter等效的操作- 尽管 java.util.concurrent.locks 包(从 1.5 开始)当然有多种锁,这些锁具有更多可用功能。lock

于 2008-10-20T07:32:24.103 回答
-1

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

在 .NET 中,您必须

更新:这适用于您拥有的类型。锁定您不拥有的公共类型在任何语言中都是不好的:)

于 2008-10-20T08:08:57.290 回答