异步多线程----执行器(Executor)

异步多线程----执行器(Executor),第1张

  如果 程序中创建了大量的生命期很短的线程 ,应该 使用线程池(thread pool) 。一个线程池中包含许多准备运行的空线程。将Runnable对象交给线程池,就会有一个线程调用run方法。当run方法退出时,线程不会死亡,而是在池中准备为下一个请求提供服务。

   另一个使用线程池的理由是减少并发线程的数目 创建大量线程会大大降低性能甚至使虚拟机崩溃 。如果有一个会创建许多线程的算法, 应该使用一个线程数“固定的”线程池 以限制并发线程的总数。

  执行器(Executor)类有许多静态工厂方法用来构建线程池。

   上面3个方法返回实现了ExecutorService接口 ThreadPoolExecutor类的对象

  

  可以使用下面的方法 将一个Runnable对象或Callable对象提交给ExecutorService

  该线程池会在方便的时候尽早执行提交的任务。 调用submit时 会得到一个Future对象 ,可用来查询该任务的状态。

  第一个submit方法返回一个Future<?>。可以使用这样一个对象来调用isDone、cancel或isCancelled。但是,get方法在完成的时候只是简单地返回null。

  第二版本的Submit也提交一个Runnable,并且Future的get方法在完成的时候返回指定的result对象。

  第三个版本的Submit提交一个Callable,并且返回的Future对象将在计算结构准备好的时候得到它。

   当用完一个线程池的时候,调用shutdown 。该方法 启动该池的关闭序列 。被关闭的执行器 不再接受新的任务 。当 所有任务都完成以后,线程池中的线程死亡 。另一种方法是调用 shutdownNow 。该池 取消尚未开始的所有任务并试图中断正在运行的线程

  总结在使用线程池时应该做的事:

  继续以一个计算匹配的文件数目程序为例:

   ScheduledExecutorService接口 具有 为预定执行 (Scheduled Execution)或 重复执行任务而设计 的方法。它是一种允许使用线程池机制的java.util.Timer的泛化。Executors类的 newScheduledThreadPool newSingleThreadScheduledExecutor方法 将返回实现了ScheduledExecutorService接口的对象。

  可以预定Runnable或Callable在初始的延迟之后只运行一次。也可以预定一个Runnable对象周期性地运行。详见API。

执行器主要包括电磁式喷油器、点火控制器(点火模块)、怠速控制阀或怠速控制电机、EGR阀、进气控制阀、二次空气喷射阀、活性炭罐电磁阀、车速控制电磁阀、燃油泵继电器、冷却风扇继电器、空调压缩机继电器、自动变速器挡位电磁阀、增压器释压电磁阀、自我诊断与报警装置、故障备用程序启动装置、仪表显示器等。随着控制功能的增加,执行器的种类与数量也将相应增加。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11516093.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存