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. 在C++中挂起并恢复主线程for Windows
- 2. 线程加入或线程挂起\恢复在c#
- 3. 如何销毁一个线程,暂停/挂起一个线程,恢复/运行一个线程?
- 4. Eclipse挂起恢复资源
- 5. Win32无法恢复挂起它自我的线程
- 6. 在java中挂起,恢复和停止线程
- 7. 如何在Windows中从命令行挂起/恢复正在运行的程序?
- 8. 挂起线程java.lang.ClassLoader.findBootstrapClass
- 9. Python线程挂起并不关闭
- 10. 用于挂起/恢复的GPIO?
- 11. 数据库恢复挂起 - SQL Server 2014
- 12. 当Delphi不需要并且安全地恢复时,在Delphi中自行挂起一个线程
- 13. java线程挂起导致其他线程挂起(续)
- 14. 线程挂起导致其他线程挂起
- 15. NSUrlSession在设备锁上挂起并恢复问题
- 16. 如何在Eclipse中挂起VM断点后恢复所有线程?
- 17. 暂停并恢复运行mysql查询
- 18. 应用程序挂起并挂起所有线程,同时使用AsyncTask
- 19. Windows窗体在运行线程时挂起
- 20. Process.Start()在后台线程上运行时挂起
- 21. 在一个线程中运行繁忙任务时,所有线程挂起
- 22. WAS挂起的线程
- 23. WPF呈现线程挂起
- 24. 线程池挂起网页
- 25. 在applet中挂起线程
- 26. 线程挂起在pthread_rwlock_t
- 27. SQL Server Management Studio在恢复过程中100%挂起
- 28. 如何使UWP应用程序挂起和恢复状态
- 29. 从cpp的父线程中暂停并恢复线程
- 30. 恢复线程的上下文并继续执行?
太感谢你了,先生......这对我帮助很大。谢谢你这么多.. – 2012-04-15 16:13:23