我只是在学习Java,我发现Java文档/书籍非常强调同步。我已经阅读了很多c#docs / books,你只是不太注重这个主题。
c#是否以不同方式处理锁定/同步,或者作为Web应用程序(应用程序池,iis,clr verus容器/ jvm / tomcat)执行不同的操作?
答案 0 :(得分:7)
lock
和synchronized
大致相同,尽管它们的实现方式有所不同 - 特别是在C#中锁定只是用于调用Monitor.Enter / Exit的语法糖,而在Java中则是没有库等价。
C#没有同步方法,但您可以使用[MethodImpl(MethodImplOptions.Synchronized)]
来实现相同的效果。 (我认为存在一些微妙的差异,但它们大致相同。)我不建议在任何一种语言中使用它,但是 - 锁定私有锁。
.NET和Java中的其他并发库支持更加分离 - Object.wait / notify / notifyAll和Monitor.Wait / Pulse / PulseAll的原语相似,但更高级别的支持是完全不同的。
内存模型略有不同 - 如果你没有锁定而没有尝试工作它们足够接近,但正确的无锁代码在.NET和Java中会有所不同。
不确定如何回答您的网络应用程序点...