请教一个timeout的实现问题

07-01-18 pushboy
需要实现一个timeout的功能

方法A调用另外一个方法B

如果B执行的时间超出

A中断调用,返回timeout异常

这个有什么好的方法么

谢谢

galaxystar
2007-01-20 14:53
方法A调用方法B,在一个线程里运行的,有点困难!

我的思路是,new一个object,然后当前线程wait(timeout),把object引用给另一个线程,如果规定时间内运行完,调用notify返回锁,并记录wait与notify的时间

pushboy
2007-01-29 20:39
今天用timertask做了一个,倒是可以实现

但是下面实现线程池的时候出现问题

因为是通过timer.scheule来调度,但是thread执行之后,再次执行scheule的时候,就会报错,但是线程池拿出来的很可能是用过的,不知道怎么解决

不知道concurrent是不是可以解决,找资料看看

现在回家了,明天把目前的代码贴出来看看

darthin
2007-02-05 17:49
强烈关注中。。。

pushboy
2007-03-12 16:41
还是没有好的办法阿,我这么实现,总是不对,线程中断不了

ThreadBiz threadBiz = new ThreadBiz(); //业务线程

threadBiz.start();

try

{

threadBiz.join(10); //超时控制

}

catch(InterruptedException es)

{

es.printStackTrace();

}

if(threadBiz.isAlive())

{

threadBiz.interrupt();

// ------这个时候,线程的状态总是RUNNABLE...threadBiz.interrupted() = false

System.out.println("超时" + threadBiz.getState() + "..." + threadBiz.interrupted());

}

猜你喜欢