java ExecutorService 介绍及使用

  • 2016-04-15
  • 浏览 (1306)

ExecutorService继承自Executor,它的目的是为我们管理Thread对象,从而简化并发编程。

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  赞