Java“ synchronized”之间是否存在任何差异?和C#的“锁定”?

StackOverflow https://stackoverflow.com/questions/217707

  •  03-07-2019
  •  | 
  •  

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

有帮助吗?

解决方案

根据此网站: 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)]

其他提示

Keeg发布的链接中没有涉及的一个有趣的区别:就我所知,在Java的.NET中没有等效的方法调用 Monitor.Enter Monitor.Exit ,C# lock 语句归结为。这意味着您不能完全等同于监控。 TryEnter - 当然java.util.concurrent.locks包(从1.5开始)有各种各样的锁,它们有更多可用的功能。

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

在.NET中,您必须

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top