Thread.yield() 被认为是有害的吗?
在处理我的Java应用程序时,我有一个简单的多线程情况(一个异步资源加载器线程和一个等待加载程序完成的主线程,随着进度更新UI),我想通过调用来解决
while( !foo.isInitialized() ) {
Thread.yield();
}
在主线程中。我知道有更强大的解决方案;尽管如此,加载器不是由我设计的,它基本上是一个只读库(我不能简单地,因为我不能让它给我发送一个;而且,它不会在完成后死亡),我只需要等到加载完成。wait()
notify()
Java文档说(请注意,这在1.6文档中不存在,而是由1.7文档添加的)
很少适合使用此方法。
NetBeans 警告我
调用方法 on 通常用于伪装同步问题,应避免使用。
yield()
java.lang.Thread
Google Codepro AnalytiX,OTOH说
不应使用该方法,因为它的行为在所有平台上都不一致。
Thread.yield()
我应该关注这些警告并尝试找到更好的解决方案(欢迎所有建议),还是应该将它们视为“警告噪音”并抑制/忽略它们?
注意:我想到了使用(Thread.sleep(0)和Thread.yield()语句是否等同?值得在这里提及);尽管如此,如果ing没有持续睡眠的“奖励”,为什么Java提供它 - 那么它的实际有效用例是什么?sleep()
yield
稍微相关:有没有更好的解决方案来解决Thread.yield()? & Thread.Sleep或Thread.Yield。