多线程在等待时做某事

时间:2012-12-12 15:22:03

标签: java multithreading synchronization

我的程序基本上有一个单元格矩阵(共享内存)和汽车(可观察线程)。在每次移动之前,每辆车都要求访问下一个单元,如果下一个单元被阻塞,则进入一个调用wait()的同步块,线程进入休眠状态。我想知道是否有任何方法可以让汽车在等待()时做一些事情,然后当他得到通知时他可以继续做他在等待之前做的事情。

2 个答案:

答案 0 :(得分:1)

你必须重新设计:不要用线程模拟汽车。让线程池执行任何所需的任务,并使用具有回调函数的异步模型来指导汽车的行为。如果一个单元被阻塞,那么汽车的状态就不会改变,并且线程池可以做其他事情。释放单元格后,触发相应的回调,这将将更新任务提交到池中。

答案 1 :(得分:0)

我使用Handler进行双向线程通信,做了类似于你所描述的内容。

  • child / worker /'car'线程工作,进入休眠一段时间(~100ms),醒来时检查线程类成员变量的状态变化。

  • 父线程将向工作线程发送Handler消息,工作线程接收命令并在工作线程类中设置成员变量,以便在下次工作人员退出睡眠时进行检测。

以下是我一直在审查的链接,以了解如何使用Handler并在线程之间进行有效沟通: