从Java到C#,线程结构的差异

  • 本文关键字:线程结构 Java c# java
  • 更新时间 :
  • 英文 :


我已经从java迁移到C#,并对wait()和sleep()感到困惑。在 java 中,睡眠不会删除对象的锁,并且在睡眠完成后线程恢复工作,在等待的情况下,它会从对象中删除锁并允许其他线程访问该对象一段时间。

这在 C# 中是否也是如此,或者有任何差异?

是的,在 C# 中也是如此。在大多数情况下,Java中的Thread.sleepObject.waitObject.notifyObject.notifyAll与.NET中的Thread.SleepMonitor.WaitMonitor.PulseMonitor.PulseAll非常对应。

我希望在细节上有一些差异,比如公平性,但基本的工作方式是一样的。

但是,在现代代码中,无论是在 Java 还是 C# 中,您都很少使用这些低级抽象 - 在 Java 中,在 java.util.concurrent 中使用更高级的抽象,而在 .NET 中,如果可以的话,请尝试使用Task抽象(如果您使用的是 .NET 4)。特别是,使用 Task 将使你为 C# 5(和 WinRT)中的异步盛宴做好准备。

相关内容

最新更新