在研究网络后,我无法找到答案,所以我希望有人可以。
我正在运行一个具有多个线程的执行器服务(简化为2)。在每个线程上,我都提交了一个runnable,其中包含许多测试。这些测试使用我的计算机上的软件。
我的情况是,如果测试在任何线程上失败 - 我需要在我的计算机上重启软件。
因此,如果线程1上的测试现在需要重新启动软件 - 我需要暂停第二个线程的工作(所有线程基本上都需要暂停,包括线程1)。
在第二个线程上,测试可能正在使用该软件 - 所以我想完成该运行测试 - 暂停下一个测试/线程本身 - 重新启动软件 - 并继续在两个(所有)线程上工作。
我尝试过的事情并不太确定如何实施:John从这些视频中提供的所有优惠:Advanced Java: Multi-threading。
提前感谢您的帮助。
答案 0 :(得分:1)
我建议您查看ScheduledThreadPoolExecutor。
您可以实现一个单例实例,它将存储您的软件的状态(暂停/运行)(处理并发),并且对于每个Runnable
测试,您将检查状态执行的开始。如果状态处于暂停状态,则会稍微延迟重新安排任务(评估软件的重启时间)。这意味着,您当然应该将ServiceExecutor传递给任务构造函数的输入参数(并将其存储为变量)。