Java和x27之间有什么区别吗;s";同步的;和C#x27 ;;s";锁";?
这两个关键字的效果完全相同,还是有什么我应该注意的?根据这个网站:,C#Java和x27之间有什么区别吗;s";同步的;和C#x27 ;;s";锁";?,c#,java,synchronization,C#,Java,Synchronization,这两个关键字的效果完全相同,还是有什么我应该注意的?根据这个网站:,C#锁和Java同步代码块是“语义相同的”,而对于方法,Java使用同步,而C使用属性:[MethodImpl](MethodImplOptions.Synchronized)]Keeg发布的链接中没有提到一个有趣的区别:据我所知,Java中没有对.NET和的等效方法调用,C#lock语句可以归结为这两种方法。这意味着你不能做任何一种方法的等效操作——当然,Java.util.concurrent.locks包(从1.5开始)有
锁
和Java同步
代码块是“语义相同的”,而对于方法,Java使用同步
,而C使用属性:[MethodImpl](MethodImplOptions.Synchronized)]
Keeg发布的链接中没有提到一个有趣的区别:据我所知,Java中没有对.NET和的等效方法调用,C#lock
语句可以归结为这两种方法。这意味着你不能做任何一种方法的等效操作——当然,Java.util.concurrent.locks包(从1.5开始)有多种锁,具有更多可用功能。I java您不必担心锁定自己的公共类型
在.NET中,您
更新:这适用于您拥有的类型。锁定您不拥有的公共类型在任何语言中都是不好的:)不,“语义相同”是我需要听到的。。。以及是否存在“陷阱”,但这一页似乎相当清楚。谢谢Stackoverflow是我的新谷歌页面已经不存在了。不,在Java中锁定公共引用仍然是个坏主意。是什么让你觉得在Java中它是可以的呢?虽然这是一个有趣的链接,但它绝对(并且庄严地)没有讨论锁定公共类型的问题。我同意你不应该做什么。。。很遗憾,[MethodImpl]就是这样做的……锁定一些公共的东西,然后等待一个白痴对它进行死锁。我认为在Java中锁定公共类型可能是安全的,唯一的原因可能是它没有.net托管环境(如SQL server)中的应用程序域那样的“积极拆卸”可以。在这种情况下,孤立锁的风险在Java中就不会那么大(甚至不可能)?我在猜测。