`

JDK自带线程池解析之类功能介绍

    博客分类:
  • Java
 
阅读更多

JDK1.5以后提供了使用线程池的方法,相关类放在java.util.concurrent,java.util.concurrent.atomic,java.util.concurrent.locks包中。经常使用的是java.util.concurrent,存放着在并发编程中很常用的实用工具类

本文主要分析java.util.concurrent包,常用类的结构图如下:

 

Executor接口

作用:执行已提交的Runnable任务对象,即线程池。

方法:void execute(Runnable command)在未来某个时间执行给定的命令。该命令可能在新的线程、已入池的线程或者正调用的线程中执行,这由 Executor 实现决定。 

 

ExecutorService接口

作用:继承Executor,提供了管理终止的方法,以及可为跟踪一个或多个异步任务执行状况而生成Future的方法。(Future 表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果。)

两种关闭方法:

void shutdown()启动一次顺序关闭,执行以前提交的任务,但不接受新任务。如果已经关闭,则调用没有其他作用。

List<Runnable> shutdownNow()试图停止所有正在执行的活动任务,暂停处理正在等待的任务,并返回等待执行的任务列表。

简单的说,shutdown使线程池停止接收新任务,shutdownNow停止处理正在执行的任务以及正在等待的任务。

 

ScheduledExecutorService接口

作用:丰富了ExecutorService,可以安排在给定的延迟后运行的命令,或定期执行的命令。schedule 方法使用各种延迟创建任务,并返回一个可用于取消或检查执行的任务对象。

shedule方法:使用各种延迟创建任务,并返回一个可用于取消或检查执行的任务对象。

 

ThreadPoolExecutor类

作用:一个 ExecutorService,它使用可能的几个池线程之一执行每个提交的任务,通常使用 Executors 工厂方法配置。每个 ThreadPoolExecutor 还维护着一些基本的统计数据,如完成的任务数。

具体使用例子参考:http://blog.csdn.net/whuqin/archive/2011/07/01/6578470.aspx

JDK强烈建议使用较为方便的 Executors 工厂方法 Executors.newCachedThreadPool()(无界线程池,可以进行自动线程回收)、Executors.newFixedThreadPool(int)(固定大小线程池)和 Executors.newSingleThreadExecutor()(单个后台线程),它们均为大多数使用场景预定义了设置。

 

Executors 类

作用:是一个工厂类,提供了生成多种类型的 Executor方法,使用这些工厂方法可以创建不同类型的线程池。

方法:有很多工厂方法,举两个如下。

public static ThreadFactory defaultThreadFactory()返回用于创建新线程的默认线程工厂。

public static ExecutorService newCachedThreadPool()创建一个可根据需要创建新线程的线程池。调用 execute 将重用以前构造的线程(如果线程可用)。如果现有线程没有可用的,则创建一个新线程并添加到池中。终止并从缓存中移除那些已有 60 秒钟未被使用的线程。因此,长时间保持空闲的线程池不会使用任何资源。

 

ThreadFactory接口

作用:根据需要创建新线程的对象。是最简单得线程池了。

方法:Thread newThread(Runnable r)构造一个新 Thread。Executors.defaultThreadFactory() 方法提供了更有用的简单实现,即在返回线程前将已创建线程的上下文设置为已知的值。

分享到:
评论

相关推荐

    JDK自带线程池分析

    ThreadPoolExecutor 是 JDK 自带线程池的核心类,提供了线程池的管理和执行功能。该类提供了多种方法来创建和管理线程池,例如固定大小的线程池、单线程的线程池和计划线程池等。 创建线程池 创建线程池有多种方法...

    jdk自带线程池实例详解

    jdk自带的线程池可以通过Executors工厂类来创建,Executors工厂类提供了多种创建线程池的方法,下面我们来看下使用示例: 1. newFixedThreadPool(固定大小的线程池) 使用newFixedThreadPool方法可以创建一个固定...

    JDK自带xml解析器dom+sax

    JDK(Java Development Kit)提供了两种内置的XML解析器:DOM(Document Object Model)和SAX(Simple API for XML),它们各有特点,适用于不同的场景。 1. DOM解析XML: DOM解析器将整个XML文档加载到内存中,...

    JDK1.5线程池源码及详细注释

    JDK 1.5引入了java.util.concurrent包,其中包含了线程池的实现,使得并发编程更加便捷和高效。线程池的核心在于它的设计策略,包括核心线程数、最大线程数、线程存活时间、工作队列以及拒绝策略。 线程池的主要类...

    JDK自带方法解析xml特定格式的字符串

    本篇文章将详细探讨如何使用JDK自带的方法解析XML特定格式的字符串。 首先,我们需要了解JDK中处理XML的主要API,包括`javax.xml.parsers`包下的`DocumentBuilderFactory`和`DocumentBuilder`,以及`org.w3c.dom`包...

    jdk1.5线程池讲解

    JDK1.5的线程池讲解,示例代码,很精辟~

    利用jdk自带算法实现的AES加解密

    本文将详细介绍如何利用JDK自带的算法实现AES加解密,并结合Base64编解码进行数据处理。 首先,AES是一种分组密码,它以128位为一个数据块进行加密,支持128、192和256位的密钥长度。在JDK中,AES加解密的核心类...

    通用多线程模块(jdk线程池的运用)

    介绍一个通用多线程服务模块。是利用jdk线程池,多线程并行处理多任务,以提高执行效率。

    JDK1.5线程池

    资源很不错

    JDK线程池和Spring线程池的使用实例解析

    下面我们将详细介绍JDK线程池和Spring线程池的使用实例解析。 JDK线程池 JDK线程池是Java中的一个内置线程池实现,它提供了一个ExecutorService接口,该接口提供了execute、submit、shutdown等方法来管理线程池。...

    JDK1.5中的线程池

    JDK1.5中的线程池(ThreadPoolExecutor)使用简介

    自定义实现Java线程池1-模拟jdk线程池执行流程1

    然而,在实际开发中,通常推荐使用JDK提供的`ThreadPoolExecutor`类,因为它提供了更丰富的功能和更好的性能优化。如《Effective Java》第二版第47条建议,避免重复造轮子,使用成熟且经过优化的类库。

    JDK7多线程部分类(接口)关系图

    JDK7多线程部分类(接口)关系图,根据官网得出

    JDK自带的日志包简单应用

    JDK(Java Development Kit)自带了一个基础的日志框架,名为`java.util.logging`,它提供了灵活的日志处理机制。本篇将深入探讨如何利用JDK自带的日志包进行简单的日志应用。 首先,`java.util.logging.Logger`是...

    一个通用的Java线程池类

    环境:Windows XP ...这里本人翻写一个通用的线程池类,它可以用来作为工具类处理许多多线程问题。代码注释非常详尽,一行注释一行代码。 阅读对象:非常熟悉Java的基本概念,并且熟悉命令行编写代码的人员。

    JDK自带调试工具doc

    本篇将详细介绍JDK自带的几个主要调试工具,包括`jmap`、`jstack`、`jconsole`,以及相关的文档资源。 1. `jmap`:这是一个用于诊断堆内存状况的工具。通过`jmap`,我们可以获取到堆内存的详细映射,包括对象分配...

    使用jdk自带的jar工具打jar包

    本篇将详细介绍如何使用JDK自带的`jar`工具来创建JAR包,这是一项基础但至关重要的技能。 一、`jar`工具简介 `jar`是Java Development Kit (JDK) 自带的一个命令行工具,用于创建、更新和提取JAR文件。它支持...

    jdk1.5+线程池应用

    使用jdk1.5 实现的线程池. 可以定制人物和其它特性. 下载后可以自己进行相关功能完善. 欢迎加QQ:934547801一起讨论

    JDK1.4使用线程池

    NULL 博文链接:https://hany.iteye.com/blog/516597

    Jconsole JDK自带的监控程序

    ### JConsole:JDK 自带的监控工具 #### 一、简介 JConsole是一款由Sun Microsystems(现已被Oracle收购)开发并集成于JDK 1.5及以上版本中的图形化监控工具。它能够帮助开发者及运维人员监测和诊断运行中的Java...

Global site tag (gtag.js) - Google Analytics