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

2022-09-03 14:42:34

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


答案 1

根据这个网站:http://en.csharp-online.net/CSharp_FAQ:_What_is_the_difference_between_CSharp_lock_and_Java_synchronized,C#和Java代码块是“语义相同的”,而对于方法,Java使用,而C#使用属性:。locksynchronizedsynchronized[MethodImpl(MethodImplOptions.Synchronized)]


答案 2

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


推荐