2012-10-29 39 views
0

我有一台状态机,许多线程用它来管理游戏的状态。我需要能够清理线程,如果发生什么事情,游戏实例不因任何原因而改变状态。清理已停止的线程

我怎么能这样做,我有状态机?

+1

你是什么意思的“*清理线程*”? –

回答

0

如果我正确地得到你,你的意思是终止给定事件的线程,并检查一个状态是否改变。你可以通过很多方式来做到这一点。让我建议你一个可能的解决方案。

1 - 一个简单的终止线程的方法是将这些线程放入列表,数组等中,以确定要终止的线程。

2 - 创建一个terminateTheadList(...)方法。

3 - 终止它们的方法是使用java.lang.Thread .interrupt()方法。迭代你的线程列表,数组等。并中断()它们。然后,一旦你得到异常允许线程终止(也就是说,不要捕获这个异常和循环)。

4 - 检查游戏实例是否创建一个新线程(这个线程不应该在线程终止列表中),检查该实例游戏并将其最后一次更改。睡觉并再次检查。如果实例没有改变,再次调用你的terminateThreadList方法。

我希望这有助于

+0

这就是我在想什么,像标记和扫描。干杯。 – user1555190