1
A
回答
2
通常的做法是在某个对象上调用wait
,以便另一个线程可以通知。这将是你的代码的模式:
public void run() {
. . .
// decide to suspend thread execution:
synchronized (LOCK) {
try {
LOCK.wait();
} catch (InterruptedException e) {
// thread was interrupted -- time to return?
}
}
// execution resumes here after interrupt or notify
}
然后其他线程执行该代码:
synchronized (LOCK) {
LOCK.notify(); // or notifyAll();
}
在这些代码片段,LOCK
是一些对象,它是对代码的两件访问。如果使用可用对象来完成工作是有意义的,则不需要单独的对象。
0
您可能需要Object.wait()
然后Object.notifyAll()
,但正确使用它是一件棘手的事情。阅读它。 Josh Bloch提供的Effective Java是一个很好的源代码。
3
不知道更多细节很难说清楚。但是,你的选择是:
Thread.sleep()
- 无条件地睡了一会儿wait/notify
对等待某个对象阻止数据结构一样
BlockingQueue
上,唤醒线程的东西出现时在收集Thread.join()
要等一些其他线程 个
Java 5的并发抽象,如
Semaphore
,CountDownLatch
,CyclicBarrier
和许多其他
相关问题
- 1. 挂起恢复线程:Java的
- 2. 在POSIX线程中挂起和恢复
- 3. 在C++中挂起并恢复主线程for Windows
- 4. 线程加入或线程挂起\恢复在c#
- 5. 如何销毁一个线程,暂停/挂起一个线程,恢复/运行一个线程?
- 6. Eclipse挂起恢复资源
- 7. Win32无法恢复挂起它自我的线程
- 8. 在java中挂起,恢复和停止线程
- 9. .net 4.0 c#:暂停/恢复线程池中的并行运行线程暂时?
- 10. 如何在Windows中从命令行挂起/恢复正在运行的程序?
- 11. 挂起并恢复由QProcess在Qt中启动的子进程
- 12. 应用程序“未能及时恢复”并挂起
- 13. 停止CRF ++运行并恢复运行
- 14. 线程挂起BigDecimal.compareTo
- 15. 挂起线程java.lang.ClassLoader.findBootstrapClass
- 16. 避免在实用程序中等待/通知挂起/恢复线程
- 17. Python线程挂起并不关闭
- 18. 如果在线程中运行,urllib2打开程序会挂起
- 19. 用于挂起/恢复的GPIO?
- 20. 数据库恢复挂起 - SQL Server 2014
- 21. 当Delphi不需要并且安全地恢复时,在Delphi中自行挂起一个线程
- 22. java线程挂起导致其他线程挂起(续)
- 23. 线程挂起导致其他线程挂起
- 24. NSUrlSession在设备锁上挂起并恢复问题
- 25. 如何在Eclipse中挂起VM断点后恢复所有线程?
- 26. 暂停并恢复运行mysql查询
- 27. 我可以使用另一个线程检测挂起的进程并从中恢复吗?
- 28. Windows窗体在运行线程时挂起
- 29. Process.Start()在后台线程上运行时挂起
- 30. 运行线程时,窗口偶尔挂起/死机
太感谢你了,先生......这对我帮助很大。谢谢你这么多.. – 2012-04-15 16:13:23