Java“synchronized”和C#的“锁定”之间有什么区别吗?

时间:2008-10-20 07:19:44

标签: c# java synchronization

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

3 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:5)

Keeg发布的链接中没有涉及的一个有趣的区别:据我所知,Java for .NET Monitor.Enter和{{3}没有等效的方法调用},C#lock声明归结为。这意味着你不能做同等级的Monitor.Exit - 当然java.util.concurrent.locks包(从1.5开始)有各种各样的锁,它们有更多的功能。

答案 2 :(得分:-1)

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

在.NET中,您have to

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