0

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

4

2 回答 2

1

你将不得不重新设计:不要用螺纹建模汽车。让线程池执行任何需要的任务,并使用带有回调函数的异步模型来指导汽车的行为。如果一个单元被阻塞,汽车的状态根本不会改变,线程池可以做其他事情。当单元被释放时,触发适当的回调,它将更新任务提交到池。

于 2012-12-12T15:25:47.937 回答
0

我做了一些类似于你描述的事情,使用Handlers 进行2路线程通信。

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

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

以下是我一直在查看的链接,以掌握如何使用Handlers 并有效地在线程之间进行通信:

于 2012-12-12T15:36:22.970 回答