我正在编写一个应用程序。我遇到这样的场景,我必须创建两个线程,首先创建 thread1,然后创建 thread2。线程 1 必须发布到线程 2 的处理程序中。但由于系统速度很快,在创建线程 2 并初始化处理程序之前,线程 1 就开始将消息对象发布到线程 2。因此我面临着意想不到的行为。
请告诉我如何在线程 1 中等待线程 2 启动并初始化处理程序。我尝试了轮询机制,因为它会影响系统性能,因此此修复未被接受。
最佳答案
只需使用类似的东西:
// @ Thread 1
synchronized( someMonitor ) {
someMonitor.wait( /* time? */ );
}
// @ Thread 2
synchronized( someMonitor ) {
someMonitor.notify();
}
因此线程 1 将等待,直到线程 2 通知。我会在等待之前检查条件是否已设置。
关于java - 如何等待线程和处理程序初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7727009/