说我有这样的事情
public void run(){
Thread behaviourThread = new Thread(abstractBehaviours[i]);
behaviourThread.start();
}
我想等到abstractBehaviours [i] run方法已经完成或运行5000毫秒.我怎么做? behaviourThread.join(5000)似乎没有这样做afaik(我的代码有问题,我已经把它归结为那个).
所有抽象的abstractBehaviour类当然都是Runnable.我不想在每个run方法中实现它,因为它看起来很难看并且有很多不同的行为,我宁愿在调用/执行线程中使用它并且只执行一次.
解决方案?第一次做这样的线程.谢谢!
编辑:因此中断解决方案将是理想的(需要对AbstractBehaviour实现进行最小的更改).但我需要线程停止,如果它已经完成或已经过了5000毫秒,所以类似下面的东西将无法工作,因为线程可能在父线程中的while循环之前完成.合理?任何解决这个问题的方法,我都很乐意从明显启动线程的线程中做到这一点.
long startTime = System.currentTimeMillis();
behaviourThread.start();
while(!System.currentTimeMilis - startTime < 5000);
behaviourThread.interrupt();
try {
behaviourThread.join();
} catch (InterruptedException e1) {
e1.printStackTrace();
}
编辑:nevermind我看到有一个Thread.isAlive()方法,我认为都解决了