这两个关键字是否具有完全相同的效果,或者我应该注意哪些?
根据这个站点: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的Monitor.Enter和Monitor.Exit中没有用Java的等效方法调用,C#语句归结为.这意味着你不能做相当于Monitor.TryEnter的工作 - 当然java.util.concurrent.locks包(从1.5开始)有各种各样的锁具有更多的功能.lock