这里使用JDK5+的java.util.concurrent包下的API实现,采用这种方式是相对比较安全的。
实现效果:
启动一个子任务,然后等待子任务的计算结果同时设定一个超时时间,如果等待时间超出预设定的超时时间,则中断子任务。
代码实现:
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
/**
* 启动一个任务,然后等待任务的计算结果,如果等待时间超出预设定的超时时间,则中止任务。
*
* @author Chen Feng
*/
public class TaskTimeoutDemo {
public static void main(String[] args) {
System.out.println("Start ...");
ExecutorService exec = Executors.newCachedThreadPool();
testTask(exec, 15); // 任务成功结束后等待计算结果&#