文档详情

ExecutorService用法详解(补足六个汉字).doc

发布:2018-12-25约8.86千字共8页下载文档
文本预览下载声明
ExecutorService用法详解 接口 java.util.concurrent.ExecutorService 表述了异步执行的机制,并且可以让任务在后台执行。壹個 ExecutorService 实例因此特别像壹個线程池。事实上,在 java.util.concurrent 包中的 ExecutorService 的实现就是壹個线程池的实现。 ExecutorService 样例 这里有壹個简单的使用Java 实现的 ExectorService 样例: ExecutorService executorService = Executors.newFixedThreadPool(10); executorService.execute(new Runnable() { public void run() { System.out.println(Asynchronous task); } }); executorService.shutdown(); 首先使用 newFixedThreadPool() 工厂方法创建壹個 ExecutorService ,上述代码创建了壹個可以容纳10個线程任务的线程池。其次,向 execute() 方法中传递壹個异步的 Runnable 接口的实现,这样做会让 ExecutorService 中的某個线程执行这個 Runnable 线程。 任务的委托(Task Delegation) 下方展示了一个线程的把任务委托异步执行的ExecutorService的示意图。 壹旦线程把任务委托给 ExecutorService,该线程就会继续执行与运行任务无关的其它任务。 ExecutorService 的实现 由于 ExecutorService 只是壹個接口,你壹量需要使用它,那麽就需要提供壹個该接口的实现。ExecutorService 接口在 java.util.concurrent 包中有如下实现类: HYPERLINK /java-util-concurrent/threadpoolexecutor.html \t _blank ThreadPoolExecutor HYPERLINK /java-util-concurrent/scheduledexecutorservice.html \t _blank ScheduledThreadPoolExecutor 创建壹個 ExecutorService 你可以根据自己的需要来创建壹個 ExecutorService ,也可以使用 Executors 工厂方法来创建壹個 ExecutorService 实例。这里有几個创建 ExecutorService 的例子: ExecutorService executorService1 = Executors.newSingleThreadExecutor(); ExecutorService executorService2 = Executors.newFixedThreadPool(10); ExecutorService executorService3 = Executors.newScheduledThreadPool(10); ExecutorService 使用方法 这里有几种不同的方式让你将任务委托给壹個 ExecutorService: execute(Runnable) submit(Runnable) submit(Callable) invokeAny(...) invokeAll(...) 我会在接下来的内容里把每個方法都看壹遍。 execute(Runnable) 方法 execute(Runnable) 接收壹個 java.lang.Runnable 对象作为参数,并且以异步的方式执行它。如下是壹個使用 ExecutorService 执行 Runnable 的例子: ExecutorService executorService = Executors.newSingleThreadExecutor(); executorService.execute(new Runnable() { public void run() { System.out.println(Asynchronous task); } }); executorService.shutdown(); 使用这种方式没有办法获取执行 Runnable 之后的结果,如果你希望获取运行之后的返回值,就必须使用 接收 Callable 参数的 execute() 方法,后者将会在下文中提到。 s
显示全部
相似文档