多线程-Executor,Executors,ExecutorService,ScheduledExecutorService,AbstractExecutorService

引用

系统启动一个新线程的成本是比较高的,因为涉及与操作系统交互。使用线程池可以很好地提高性能,尤其是当程序中需要创建大量生存期很短的线程时,更应该考虑使用线程池。线程池在系统启动时即创建大量空闲的线程,程序将一个Runnable对象 或Callable对象传给线程池,线程池就会启动一个线程来执行它们的run()或call()方法,当run()或call()方法执行结束后,该线程并不会死亡,而是再次返回线程池中成为空闲状态,等待执行下一个Runnable对象的run()或call()方法。

线程池也可以有效控制系统中并发线程的数量,当系统中包含大量并发线程时,会导致系统性能剧烈下降,甚至导致JVM崩溃,而线程池的最大线程数参数可以控制系统中并发线程数不超过此数。

Java5线程池

Java5内建线程池,新增了Executors工厂类来产生线程池,该工厂类包含如下几个静态工厂方法来创建线程池。

ExecutorService newCachedThreadPool() 创建一个具有缓冲功能的线程池

ExecutorService newFixedThreadPool(int n) 创建一个可重用的,具有固定线程数的线程池

ExecutorService newSingleThreadExecutor() 创建一个只有单线程的线程池,与newFixedThreadPool(1)相同

ScheduledExecutorService newScheduledThreadPool(int corePoolSize) 创建一个具有指定线程数的线程池,它可以在指定延迟后执行线程任务。

ScheduledExecutorService newSingleThreadScheduledExecutor() 创建只有一个线程数的线程池,它可以在指定延迟后执行线程任务。

ExecutorService 代表尽快执行线程的线程池(只要线程池中有空闲的线程池,就立刻执行线程任务)。

ScheduledExecutorService 代表可在指定延迟后或周期性地执行线程任务的线程池。

时间: 2024-11-08 03:15:05

多线程-Executor,Executors,ExecutorService,ScheduledExecutorService,AbstractExecutorService的相关文章

Executor / Executors / ExecutorService /

Java SE5的java.util.concurrent包中的执行器(Executor)将为你管理Thread对象,从而简化了并发编程.Executor在客户端和执行任务之间提供了一个间接层,Executor代替客户端执行任务.Executor允许你管理异步任务的执行,而无须显式地管理线程的生命周期.Executor在Java SE5/6中时启动任务的优选方法.Executor引入了一些功能类来管理和使用线程Thread,其中包括线程池,Executor,Executors,ExecutorS

Java再学习——Executor,ExecutorService,ScheduledExecutorService与Executors

1,Executor.ExecutorService和ScheduledExecutorService,它们都是接口,它们的关系是ScheduledExecutorService继承ExecutorService而ExecutorService 又继承Executor. 这些只要点开源码就能看得到. 2,对于Executor接口,它只有一个方法void execute(Runnable command);而其后的ExecutorService和ScheduledExecutorService就各

JDK 源码解析 —— Executors ExecutorService ThreadPoolExecutor 线程池

零. 简介 Executors 是 Executor.ExecutorService.ThreadFactory.Callable 类的工厂和工具方法. 一. 源码解析 创建一个固定大小的线程池:通过重用共享无界队列里的线程来减少线程创建的开销.当所有的线程都在执行任务,新增的任务将会在队列中等待,直到一个线程空闲.由于在执行前失败导致的线程中断,如果需要继续执行接下去的任务,新的线程会取代它执行.线程池中的线程会一直存在,除非明确地 shutdown 掉. public static Exec

Java多线程—Executor框架概述

1. 任务Task相关的接口与类 1.1 Runnable 表示一个可被执行的命令,通常用于在不同线程中执行任务. package java.lang; public interface Runnable { public void run(); } 1.2 Callable<V> 表示一个有返回结果的任务 package java.util.concurrent; public interface Callable<V> { V call() throws Exception;

java中Executor、ExecutorService、ThreadPoolExecutor介绍

java中Executor.ExecutorService.ThreadPoolExecutor介绍 ExecutorService 的理解与使用

多线程--Executor线程池框架

Executor的介绍 在Java 5之后,并发编程引入了一堆新的启动.调度和管理线程的API.其内部使用了线程池机制,它在java.util.cocurrent 包下,通过该框架来控制线程的启动.执行和关闭,可以简化并发编程的操作.因此,在Java 5之后,通过Executor来启动线程比使用Thread的start方法更好,除了更易管理,效率更好(用线程池实现,节约开销)外,还有关键的一点:有助于避免this逃逸问题——如果我们在构造器中启动一个线程,因为另一个任务可能会在构造器结束之前开始

java多线程之Executor 与 ExecutorService两个基本接口

一.Executor 接口简介 Executor接口是Executor框架的一个最基本的接口,Executor框架的大部分类都直接或间接地实现了此接口. 只有一个方法 void execute(Runnable command): 在未来某个时间执行给定的命令.该命令可能在新的线程.已入池的线程或者正调用的线程中执行,这由 Executor 实现决定. public interface Executor { /** * Executes the given command at some tim

java中Executor、ExecutorService、ThreadPoolExecutor介绍(转)

1.Excutor 源码非常简单,只有一个execute(Runnable command)回调接口 public interface Executor { /**     * Executes the given command at some time in the future.  The command     * may execute in a new thread, in a pooled thread, or in the calling     * thread, at the

Executor与ExecutorService

ExecutorService 接口继承了 Executor 接口,是 Executor 的子接口. Executor 接口定义了 execute()方法用来接收一个Runnable接口的对象,而 ExecutorService 接口中的 submit()方法可以接受Runnable和Callable接口的对象. Executor 中的 execute() 方法不返回任何结果,而 ExecutorService 中的 submit()方法可以通过一个 Future 对象返回运算结果. Execu