edi*_*ode 20 c# java multithreading
我总是看到人们使用它Thread.Sleep()来处理延迟处理或类似的东西,人们总是被这种方式使用它而受到嘲笑.
什么时候合理/需要使用Thread.Sleep()?
SLa*_*aks 26
你应该Thread.sleep()在实际需要延迟后台线程时调用.
不要调用它来帮助同步(它不会),不要在循环中调用它来等待某些东西(它会很慢)并且永远不要在UI线程上调用它(它会冻结).
当你需要在一些一次性或测试代码中引入暂停时,Thread.Sleep()就可以了.
在生产代码中,最好尝试找到不同的选项.例如,如果您尝试在某个时间间隔内执行某些操作,请使用许多预先存在的计时器类之一.如果您在输入队列清空时(以及在.NET上)尝试暂停,请考虑使用Monitor.Wait()而Monitor.Pulse()不是.
更多(再次,以.NET为中心)解释本文中Sleep()的缺点:Thread.Sleep是一个设计不佳的程序的标志.
在极少数情况下,我认为它可以接受。最终,这归结为以下情况:在某些情况下,其他情况可能会引起其他人的注意,但根据经验,我必须在生产中使用Thread.Sleep满足以下所有条件(又名不琐碎或测试)的代码: