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

标签 c# java

我已经从 java 转向 C#,并且对 wait() 和 sleep() 感到困惑。 在java中, sleep 不会删除对象的锁,并且在 sleep 完成后线程重新开始工作,并且在等待的情况下,它确实会删除对象的锁并允许其他线程访问该对象一段时间。

这在 C# 中也是如此还是有什么区别?

最佳答案

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

我预计公平性等细节上会存在一些差异,但基本原理是相同的。

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

关于c# - 从 Java 到 C#,线程结构的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10845192/

相关文章:

java - 对话框不会停止,我的代码有什么问题?

Java/线程优先级

c# - 在泛型参数上调用扩展方法(例如 "Union")

c# - 接口(interface)中的 List<T> 到 IEnumerable<T> 问题

c# - 通过 C# 通过 Google Apps 帐户发送电子邮件

java - 如何更改 JavaFX 2.0 中的插入符颜色?

java - 如何修复 JAVA_HOME 对 cordova 无效

c# - 报告线程进度的最佳方式

c# - Entity Framework 和 OnModelCreating()

java - 将 JSpinner 值转换为新的 int