基于定时器执行

时间:2011-12-12 07:19:06

标签: java timer

我必须检查一段代码(例如,调用第三方Web服务)是否在给定时间段内完成其执行。如果执行代码的输出未在给定时间内出现,则执行应该中断并且应将默认值传递给被调用对象。

如何在java中完成?

任何建议

1 个答案:

答案 0 :(得分:0)

我的意见是你需要两个主题。

第一个线程是执行服务调用,第二个线程应该被调度为中断第一个。

第一线程:

public class ServiceCall implements Runnable {

    public void run() {
       serviceClient.callOperation();
    }

}

第二线程:

public class Interruptor implements Runnable {


public Interruptor(Future<?> future) {
serviceCallFuture = future;
}


private Future<?> serviceCallFuture;

public void run() {
serviceCallFuture.cancel(false);
}


}

现在主要逻辑:

ScheduledExecutorService executor = Executors.newScheduledThreadPool(2);
Future<?> future = executor.submit(new ServiceCall());
// Schedule interruptor to cancel the thread after 10 seconds
executor.schedule(new Interruptor(future), 10, TimeUnit.SECONDS);