java 线程不运行时间_Java:停止运行时间过长的线程?

说我有这样的事情

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()方法,我认为都解决了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值