-1

我想知道lockvs的运行时是否有任何区别syncronized。我了解到这syncronized是一个缓慢的操作并且在 Java 中已经过时。今天我lock在 C# 看到了,我想知道它们是否相同,并且lock是我“想要”避免的东西,就像在 Java 中一样,或者他更快,我想使用它......

谢谢!

4

1 回答 1

2

1 synchronized 并没有过时,java.util.concurrent.locks 包只是提供了并不总是需要的扩展功能。

2 锁定是在 CPU 级别完成的,在这方面 Java 和 C# 没有区别

http://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html

... 需要特殊指令(称为内存屏障)来刷新或使本地处理器缓存无效,以便查看其他处理器进行的写入或使该处理器的写入对其他人可见。这些内存屏障通常在执行锁定和解锁操作时执行;它们对高级语言的程序员是不可见的。

于 2013-09-24T12:34:42.790 回答