你可以为此使用scheduledexecutorservice。首先,你只提交一次即可立即开始,并保留创建的未来。之后,你可以提交新任务,该任务将在一段时间后取消保留的将来。
scheduledexecutorservice executor = Executors.newScheduledThreadPool(2);
final Future handler = executor.submit(new Callable(){ ... });
executor.schedule(new Runnable(){
public void run(){
handler.cancel();
}
}, 10000, TimeUnit.MILLISECONDS);
这将使你的处理程序(主要功能被中断)执行10秒钟,然后将取消(即中断)该特定任务。