Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java和x27之间有什么区别吗;s";同步的;和C#x27 ;;s";锁";?_C#_Java_Synchronization - Fatal编程技术网

Java和x27之间有什么区别吗;s";同步的;和C#x27 ;;s";锁";?

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开始)有

这两个关键字的效果完全相同,还是有什么我应该注意的?

根据这个网站:,C#
和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中就不会那么大(甚至不可能)?我在猜测。