首页 > 自考资讯 > 自考知识

java并发编程实践和并发编程实战,java并发编程实战 看不懂

头条共创 2024-07-05

/**************************************************** * ******

* 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。

153655431607066c0e0d113~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720775309&x-signature=AoolUopdxREhRJoQRo%2FSzWClOD0%3D

深刻的理解

与Java执行器相关的类包括Executor、Executors和ExecutorService。

表演者分析

Executor是一个用于执行Runnable任务的接口。仅定义一种方法来执行Runnable 类型的任务。通过Executor 管理Thread 对象简化了编程。执行器在客户订单和任务执行之间提供了一个中间层,其中任务通过中介来执行。执行器执行任务而不管理任务生命周期。因此,Executor是推荐的启动任务的方式。

执行者分析

153655433067779f05cf92b~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720775309&x-signature=EG9DT4Y%2FFf1zd1Uv8LKJhUKztQ0%3D

注: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。这些类提供对调用方法的支持。

版权声明:本文由今日头条转载,如有侵犯您的版权,请联系本站编辑删除。

猜你喜欢