ExecutorService.execute(Runnable x) 判断是否完成,得到返回值
public class RunnableTestMain { public static void main(String[] args) { ExecutorService pool = Executors.newFixedThreadPool(2); /** * execute(Runnable x) 没有返回值。可以执行任务,但无法判断任务是否成功完成。 */ pool.execute(new RunnableTest("Task1")); /** * submit(Runnable x) 返回一个future。可以用这个future来判断任务是否成功完成。请看下面: */ Future future = pool.submit(new RunnableTest("Task2")); try { if(future.get()==null){//如果Future's get返回null,任务完成 System.out.println("任务完成"); } } catch (InterruptedException e) { } catch (ExecutionException e) { //否则我们可以看看任务失败的原因是什么 System.out.println(e.getCause().getMessage()); } } } public class RunnableTest implements Runnable { private String taskName; public RunnableTest(final String taskName) { this.taskName = taskName; } @Override public void run() { System.out.println("Inside "+taskName); throw new RuntimeException("RuntimeException from inside " + taskName); } }
posted on 2016-01-07 09:16 nickTimer 阅读(2458) 评论(0) 编辑 收藏 举报