java ExecutorService 介绍及使用
ExecutorService继承自Executor,它的目的是为我们管理Thread对象,从而简化并发编程。
Executor使我们无需显式地去管理线程的生命周期,是JDK 5之后启动任务的首选方式。
要终止 ExecutorService 里的线程你需要调用 ExecutorService 的 shutdown() 方法。
ExecutorService 并不会立即关闭,但它将不再接受新的任务,而且一旦所有线程都完成了当前任务的时候,ExecutorService 将会关闭。
在 shutdown() 被调用之前所有提交给 ExecutorService 的任务都被执行。
如果你想要立即关闭 ExecutorService,你可以调用 shutdownNow()方法。这样会立即尝试停止所有执行中的任务,并忽略掉那些已提交但尚未开始处理的任务。无法担保执行任务的正确执行。可能它们被停止了,也可能已经执行结束。
Executor使我们无需显式地去管理线程的生命周期,是JDK 5之后启动任务的首选方式。
要终止 ExecutorService 里的线程你需要调用 ExecutorService 的 shutdown() 方法。
ExecutorService 并不会立即关闭,但它将不再接受新的任务,而且一旦所有线程都完成了当前任务的时候,ExecutorService 将会关闭。
在 shutdown() 被调用之前所有提交给 ExecutorService 的任务都被执行。
如果你想要立即关闭 ExecutorService,你可以调用 shutdownNow()方法。这样会立即尝试停止所有执行中的任务,并忽略掉那些已提交但尚未开始处理的任务。无法担保执行任务的正确执行。可能它们被停止了,也可能已经执行结束。
public class CallableAndFuture1 { public static void main(String[] args) { ExecutorService es = Executors.newSingleThreadExecutor(); Future<Integer> future = es.submit(new Callable<Integer>() { public Integer call() throws Exception { return new Random().nextInt(100); } }); es.shutdown(); try { Thread.sleep(2000);// 可能做一些事情 System.out.println(future.get()); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } } }
0
赞
- 所属分类: 后端技术
- 本文标签: