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

Cha*_*aru 0 c# java

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

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

Jon*_*eet 5

是的,在C#中也是如此.在大多数情况下,Thread.sleep,Object.wait,Object.notify,Object.notifyAll在Java的紧密一致Thread.Sleep,Monitor.Wait,Monitor.Pulse,Monitor.PulseAll在.NET.

我希望在细节方面有一些差异,比如公平,但基础知识的工作方式相同.

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