`
zy19982004
  • 浏览: 661795 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
F6f66edc-1c1a-3859-b76b-a22e740b7aa7
Hadoop学习
浏览量:251950
社区版块
存档分类
最新评论

多线程总结四:Java1.5并发ThreadPoolExecutor

 
阅读更多

一.ThreadPoolExecutor作用概述

     jdk1.5之前,我们都是自己写代码对于线程池的管理我们来管理线程池。jdk1.5为我们提供了一个管理线程的类ThreadPoolExecutor,我们暂且把它称之为线程池好了。有了它我们需要把任务提交过来,至于怎么内部怎么创建线程去执行任务,怎么销毁,我们都不需要关心了。

 

二. ThreadPoolExecutor几个成员变量

  1. corePoolSize:理想线程数,建议使用的线程数。
  2. maximumPoolSize:最大线程数。
  3. poolSize:当前正在运行的线程数。
  4. BlockingQueue<Runnable> workQueue:队列。
  5. keepAliveTime:如果池中当前有多于corePoolSize的线程,则这些多出的线程在空闲时间超过 keepAliveTime 时将会终止。
  6. RejectedExecutionHandler handler:拒绝策略,添加任务失败后如何处理该任务。

三.工作流程(直接以具体数字说明)

多线程 ThreadPoolExecutor

  1. 创建一个ThreadPoolExecutor实例,此时poolSize=0,从实例.execute(Runnable)添加一个新的任务开始:
    1. 如果正在运行的线程数量poolSize=1-5小于corePoolSize=5,那么马上创建线程运行这个任务;所以最开始的5个任务,立马创建线程执行它们。
    2. 如果正在运行的线程数量poolSize=5大于或等于corePoolSize=5,那么将这个任务放入队列;所以第6到第10个任务,会被放入队列。
    3. 如果这时候队列满了,而且正在运行的线程数量poolSize=5小于maximumPoolSize=10,那么还是要创建线程运行这个任务;所以第11到15个任务,立马创建线程执行它们。||||| 如果队列是无界的,那想放多少放多少,maximumPoolSize就无效了。
    4. 如果队列满了,且正在运行的线程数量poolSize=10大于或等于maximumPoolSize=10,这些任务就会把handler执行。
  2. 如果在上述的走到了上述的1.3步,当前运行的线程数poolSize就会大于corePoolSize,等所以线程池的所有任务完成后,它最终会收缩到 corePoolSize 的大小。

 

 

0
4
分享到:
评论
1 楼 javaking1999 2012-08-15  
垃圾文章,鉴定完毕

相关推荐

    Java 模拟线程并发

    最后,Java并发库还包含了很多其他有用的工具,如Semaphore(信号量)用于控制同时访问特定资源的线程数量,CyclicBarrier(循环屏障)和CountDownLatch(计数器门锁)用于多线程间的协作,以及Lock接口及其实现如...

    深入学习:Java多线程编程

    《深入学习:Java多线程编程》是一本专注于Java并发技术的专业书籍,旨在帮助开发者深入理解和熟练运用Java中的多线程编程。Java多线程是Java编程中的核心部分,尤其在现代高性能应用和分布式系统中不可或缺。理解并...

    高并发多线程处理demo-java.rar

    在Java编程领域,高并发和多线程是关键的技术之一,尤其在服务器端应用和大数据处理中至关重要。这个"高并发多线程处理demo-java.rar"压缩包提供了一个实际的Java实现,展示了如何构建一个并发队列来接收数据,并...

    java多线程查询数据库

    本文将详细探讨如何利用Java的多线程技术和线程池来实现并发查询数据库,以及相关的文件`BatchDataUtil.java`和`BatchDataRunnable.java`可能涉及的关键知识点。 ### 1. 多线程并发查询 多线程并发查询允许我们将一...

    黑马程序员_张孝祥_Java多线程与并发库 视频+代码+资料

    根据给定文件的信息,我们可以提炼出以下关于Java多线程与并发库的相关知识点: ### Java多线程基础 1. **线程的概念**:在Java中,线程是程序执行流的基本单元。一个标准的Java应用程序至少有一个线程,即主...

    java并发编程与实践

    在Java编程领域,并发编程是一项核心技能,尤其是在大型系统或分布式应用中,高效地处理多线程和并发操作是至关重要的。"Java并发编程与实践"文档深入剖析了这一主题,旨在帮助开发者理解和掌握如何在Java环境中有效...

    java多线程与并发1

    Java多线程与并发是Java开发中的重要领域,尤其在现代高性能应用中,对多核处理器的充分利用和高效系统设计离不开并发...通过深入学习这两本书籍,开发者可以更深入地理解Java并发编程,并提升解决复杂并发问题的能力。

    java多线程Demo

    Java多线程是Java编程中的一个重要概念,它允许程序同时执行多个任务,提高了程序的效率和响应速度。在Java中,实现多线程有两种主要方式:继承Thread类和实现Runnable接口。 1. 继承Thread类: 当我们创建一个新...

    java多线程的讲解和实战

    8. **并发集合类**:Java提供了并发安全的集合类,如`ConcurrentHashMap`, `CopyOnWriteArrayList`, `BlockingQueue`等,它们内部实现了线程安全的算法,可以在多线程环境下高效使用。 9. **线程中断**:`interrupt...

    java 线程池例子ThreadPoolExecutor

    Java 中的线程池是指一个容器,里面包含了多个线程,这些线程可以重复使用,以避免频繁创建和销毁线程的开销。ThreadPoolExecutor 是 Java 中一个非常重要的线程池实现类,它提供了一个高效、灵活的线程池解决方案。...

    Java+并发性和多线程

    Java并发性和多线程是Java开发中至关重要的概念,它们涉及到如何在单个或多个处理器上同时执行程序的不同部分,从而提升程序的效率和响应速度。在这个领域,Java提供了丰富的工具和API,使得开发者能够有效地管理和...

    java多线程文件传输

    在Java中,多线程可以提高程序的执行效率,尤其在处理并发任务时,如大文件的上传、下载和传输。下面将详细探讨相关知识点。 1. **线程基础** - **线程定义**:线程是操作系统分配CPU时间的基本单位,是程序执行的...

    java并发编程实战源码,java并发编程实战pdf,Java

    《Java并发编程实战》是Java并发编程领域的一本经典著作,它深入浅出地介绍了如何在Java平台上进行高效的多线程编程。这本书的源码提供了丰富的示例,可以帮助读者更好地理解书中的理论知识并将其应用到实际项目中。...

    JAVA-多线程 所有文件

    13. **并发集合**:Java并发库提供了一些线程安全的集合,如`ConcurrentHashMap`, `CopyOnWriteArrayList`, `ConcurrentLinkedQueue`等,它们在多线程环境下表现更优。 在实际项目中,理解和熟练运用这些多线程知识...

    java高并发编程第一版

    9. **Java并发库的最新发展**:如果书籍更新至较新版本,可能会包含Java并发库的新特性,例如Java 8及以后版本引入的ForkJoinPool和CompletableFuture等高级并发工具。 10. **实战案例分析**:书中可能包含实际项目...

    Java多线程和并发知识点详细总结_并发_java_

    Java多线程和并发知识点的详细总结通常会涵盖以下内容: 1. 线程的生命周期:新建、就绪、运行、阻塞、死亡。 2. 线程的创建与启动:通过Runnable接口和Thread类创建线程。 3. 线程同步:synchronized、wait()、...

    Java 并发核心编程

    #### 一、Java并发概述 自Java诞生之初,其设计者就赋予了该语言强大的并发处理能力。Java语言内置了对线程和锁的支持,这使得开发者能够轻松地编写多线程应用程序。本文旨在帮助Java开发者深入理解并发的核心概念...

    我总结的Java多线程程序设计

    Java多线程程序设计是Java开发中的重要组成部分,它允许程序在同一时间执行多个任务,从而提高了系统的效率和响应性。本文将深入探讨Java多线程的相关...熟练掌握这些知识对于编写高效、安全的多线程Java程序至关重要。

    Java并发编程:设计原则与模式(第二版).rar

    《Java并发编程:设计原则与模式(第二版)》是一本深入探讨Java平台上的多线程和并发编程的著作。本书旨在帮助开发者理解和掌握在Java环境中进行高效并发处理的关键技术与设计模式。以下是对该书内容的一些核心知识...

    java多线程和并发.pdf

    在Java并发编程中,还涉及到多种并发工具类,例如同步容器类和并发容器类。同步容器类使用同步锁来保证线程安全,但可能会影响性能。并发容器类ConcurrentHashMap和CopyOnWriteArrayList等,采用细粒度的锁和弱一致...

Global site tag (gtag.js) - Google Analytics