等待线程在下一次迭代之前完成(没有“等待”)

时间:2013-05-26 03:23:05

标签: java multithreading

我正在循环中检查某些条件,如果满足该条件,那么我想启动一个新线程。

在我进行更新的线程中,该更新将对下一次迭代的条件产生影响。

我担心的是线程将无法完成(例如更新数据库或调用远程资源),直到下一次迭代,并且在下一次迭代时,条件仍将评估相同,因此在更新之前将运行两个或更多线程启动了。

我不能有任何计时器/等待或类似的东西。循环必须不断地瞬间运行。

我正在考虑的解决方案是在线程内部更新一个标志,并且条件检查同一个标志,直到线程完成。

感谢您的任何反馈或建议。

2 个答案:

答案 0 :(得分:0)

不要使用线程 - 线程同步操作。

您需要同步行为:在主线程中执行更新。

答案 1 :(得分:0)

不太确定你想做什么,但听起来你有一个大规模的事件循环。作为其中的一部分,当State == X时,您生成一个子进程。然后孩子设置State = Y,然后你继续用Y做东西。产生一个孩子之后,你想要等到State = Y,同时仍然执行其余的循环。听起来不对吗?

在这种情况下,只需在生成子项时设置一个标志,并且只在未设置标志时生成子项。

修改的 您需要在主线程中设置标志,而不是如您所建议的那样在子线程中设置。你不能保证孩子在主线程回到循环之前会执行任何操作。