/**************************************************** * ******
* TODO: 的说明。
* @author: gao_chun
* @since: 2015-4-17
* @version: 1.0.0
* @remark: 转载请注明出处。
****************************************************** * /
java.util.concurrent.Executor
使用Executor的软件包java.util.concurrent是并发编程中常用的工具类。在java.util.concurrent中使用Executor java.util.concurrent中Executor的子接口
Executor 提供了管理终止并生成Futures 的方法来跟踪一个或多个异步任务的执行。接口ScheduleExecutorService
ExecutorService 安排命令在指定的延迟后或定期运行。 java.util.concurrent 中实现Executor 类AbstractExecutorService 的类
ExecutorService 提供执行方法的默认实现。类ScheduledThreadPoolExecutor
线程池执行器。您可以在指定的延迟后运行该命令,也可以安排该命令定期运行。类ThreadPoolExecutor
ExecutorService 可能使用多个池线程之一执行提交给它的每个任务。通常使用Executors 工厂方法进行配置。 java.util.concurrent 中参数类型为Executor 的构造方法ExecutorCompletionService(Executor executor)
使用提供的执行器创建ExecutorCompletionService 来执行基本任务,并使用LinkedBlockingQueue 作为完成队列。 ExecutorCompletionService(执行器,BlockingQueueFutureVcompletedQueue)
使用提供的执行器创建一个ExecutorCompletionService 来执行基本任务,并使用提供的队列作为完成队列。
例子:
package Stu.executor; import java.util.concurrent.Executor; /** * 定时器测试* */public class TestExecutor { /** * 设置执行器。 param executor */public void setExecutor(Executor executor) { this.executor=executor; } /** * 使用executor执行多个任务*/public voidexecuteTasks() { //10个任务连续执行(int i=0) ; 10; i++) { executor.execute(new TestTask('task' + i)); } } public static void main(String[] args) { TestExecutor=new TestExecutor () (2)); [java] 显示纯文本。
package Stu.executor; /** * 实现Runnable 接口的任务*/public class TestTaskimplements Runnable { private String taskName; public TestTask(String taskName) { this.taskName=taskName } { //(int i=0; i 9999999 ; i++); System.out.println('执行' + 任务名称+ ', 线程ID 为: ' + Thread.currentThread().getId()) ;
在将来的某个时刻执行指定的命令。命令可以在新线程、池线程或调用线程中运行。
理解:在未来的某个特定时间异步运行。
如果命令执行的任务不可接受,则该任务将抛出RejectedExecutionException。如果命令无效,则抛出NullPointerException。
深刻的理解
与Java执行器相关的类包括Executor、Executors和ExecutorService。
表演者分析
Executor是一个用于执行Runnable任务的接口。仅定义一种方法来执行Runnable 类型的任务。通过Executor 管理Thread 对象简化了编程。执行器在客户订单和任务执行之间提供了一个中间层,其中任务通过中介来执行。执行器执行任务而不管理任务生命周期。因此,Executor是推荐的启动任务的方式。
执行者分析
注:Executor对应Executor工具类。
Executors 类有几个重要的方法。
callable(executable task):将可执行任务转换为可调用任务。
newSingleThreadExecutor():创建一个ExecutorService对象。该对象只有一个线程可用于执行任务。如果有多个任务,则会按顺序执行。
newCachedThreadPool():使用线程池创建ExecutorService对象。根据需要调整线程池大小,并将线程返回到线程池以用于执行下一个任务。
newFixedThreadPool(int poolSize):创建一个ExecutorService对象,线程池为poolSize。如果任务数量大于poolSize,则任务将排队等待顺序执行。
newSingleThreadScheduledExecutor():创建ScheduledExecutorService对象。该对象的线程池大小为1。如果有多个任务,则按顺序执行任务。
newScheduledThreadPool(int poolSize):创建ScheduledExecutorService对象。如果该对象的线程池大小大于poolSize,则任务在队列中等待运行。
Executor 还包含几个内部类:DefaultThreadFactory、DeleeratedExecutorService、DeleeratedScheduledExecutorService、PrivilegedCallableT 和RunnableAdapterT。这些类提供对调用方法的支持。
版权声明:本文由今日头条转载,如有侵犯您的版权,请联系本站编辑删除。