`

线程池1.6

 
阅读更多

java线程池,首先看一下构造方法



 解释一下参数的意义

corePoolSize 核心线程数

maximumPoolSize 最大线程数,

keepAliveTime 线程中超过核心线程数的空闲线程最大存活时间

unit 存活时间的单位

workQueue 线程队列类型

Executors.defaultThreadFactory() 构造线程的工厂类

defaultHandler 超过线程队列大小的时候,默认拒绝接受线程的handler类

这几个参数的意思,等一会分析源码的时候一并解释

 

提交到线程池执行的是execute方法,里面传入一个线程类



 执行超类的super.execute方法



 首先判定先有线程数是否大于核心线程数,如果不大于(小于),执行或运算后方法addIfUnderCorePoolSize方法



 再次判定当前线程数小于核心线程数,并且线程池是运行状态,执行addThread方法,将任务放进去



 首先新建一个worker,利用线程工厂创建一个线程,并将worker作为参数传入进去,看一下threadFactory.newThread方法


 这里面也就是返回的thread在运行的时候,调用传递过来的runnable接口,即是worker运行

这也就是在addThread方法后,最后调用了t的start即可

 

返回去,继续看execute方法的第二个if,在当前线程大于核心线程数,直接进入第二个if语句,判定runState是否是运行状态并且如队列成功

再次判定,是否线程池已经不执行了,或者当前线程数等于0,则执行ensureQueuedTaskHandled,该方法

 

只要不在运行中或者入队列失败,则执行addIfUnderMaximumPoolSize方法



 该方法和addIfUnderCorePoolSize方法类似,判定当前线程小于最大线程数并且线程池运行状态,然后进行addThread操作

如果这个时候,还是没有入队列成功,则执行reject来拒绝任务

 

回到addThread方法,该方法最后执行了t.start方法,这个t是threadFactory.newThread(w)产生的,该方法又执行了w也就是worker的run方法,

worker的run方法



 用getTask来获取队列中的商品

 

 

jdk1.7的版本,用了大量的atomicInteger来判定当前线程数量和执行的状态,其中addWorker方法中的new worker在构建的时候,就生成了新的thread,并将执行的任务丢到worker中的thread中

 

 

  • 大小: 32.7 KB
  • 大小: 43.6 KB
  • 大小: 34.9 KB
  • 大小: 22.1 KB
  • 大小: 22.1 KB
  • 大小: 41.1 KB
  • 大小: 28.7 KB
  • 大小: 29.3 KB
  • 大小: 18.2 KB
分享到:
评论

相关推荐

    jdk1.6jar包

    9. **并发编程工具**:提供了一系列的并发编程工具,如`java.util.concurrent`包,包含线程池、并发容器和并发工具类,方便开发者构建高并发应用。 10. **JMX (Java Management Extensions)**:增强了对Java应用...

    java线程池概念.txt

    3:对线程池的基本使用及其部分源码的分析(注意:这里的源码分析是基于jdk1.6;) a:线程池的状态 volatile int runState; static final int RUNNING = 0; 运行状态 static final int SHUTDOWN = 1; 关闭状态;...

    一个通用的Java线程池类

    环境:Windows XP Professional SP3, JDK 1.6 使用步骤: 1.下载解压之后,在控制台运行javac ThreadPoolTest.java 2.然后根据提示运行java命令执行示例程序,观看线程池的运行结果 目标:Java中多线程技术是一个...

    jdk1.6 源码jdk1.6 源码

    例如,`java.util.concurrent`包在并发编程中提供了高级工具,如线程池、锁和并发集合,通过源码可以学习到它们的内部工作机制。 3. **异常处理**:源码中展示了如何使用try-catch-finally结构来捕获和处理异常,...

    JAVA JDK1.6 API中文帮助文档

    4. **并发编程增强**:加入了`java.util.concurrent`包,提供了线程池、并发集合等高级并发工具,提升了多线程编程的效率和可管理性。 5. **NIO.2**:新I/O(New I/O)API在1.6版本中进一步完善,提供了文件系统...

    jdk版本1.6

    10. **并发工具类**:Java并发包(java.util.concurrent)在1.6版本中进一步增强,包括新的并发数据结构(如ConcurrentHashMap)和线程池API(ExecutorService),帮助开发者编写高效的多线程程序。 11. **安全增强...

    Java1.6api

    5. **多线程**:`java.lang.Thread`类和`java.util.concurrent`包提供了多线程编程的支持,包括线程的创建、同步控制、线程池管理等。 6. **日期和时间**:在Java 1.6中,`java.util.Date`和`Calendar`类是处理日期...

    Java API 1.6 中文。。

    4. **多线程**:Java API 1.6对多线程支持更加成熟,Thread类和Runnable接口是创建线程的基础,同时提供了synchronized关键字、wait/notify机制、线程池(ExecutorService)等高级特性,确保并发编程的可控性和效率...

    JDK1.6中文开发API

    3. **并发(Concurrency)**:1.6版本对并发库进行了大量优化,包括`java.util.concurrent`包,它提供了线程池、同步工具类如Semaphore、CountDownLatch和CyclicBarrier,以及高级并发数据结构如ConcurrentHashMap等...

    JDK_API_1.6_中文版本CHM

    2. `java.util.concurrent`:并发工具包,包含线程池、同步容器、并发集合等,简化多线程编程。 3. `java.awt`和`javax.swing`:图形用户界面(GUI)编程的支持,用于创建桌面应用。 4. `java.sql`:数据库连接和...

    tomcat1.6 Windows32位及64位

    2. **线程池**:Tomcat 1.6引入了线程池管理,允许更有效地处理并发请求,提高了服务器的响应速度和整体性能。 3. **连接器优化**:NIO(非阻塞I/O)连接器提供了一种更高效的I/O模型,特别是在高并发环境中。 4. ...

    JDK_API1.6中文版

    5. **并发编程增强**:增加了`java.util.concurrent`包,提供了线程池、并发集合、原子变量等高效并发工具类,使得多线程编程更为简便和安全。 6. **脚本引擎支持**:通过`javax.script`包,Java 1.6支持JavaScript...

    tomcat7,正常,可用,需要jdk1.6版本

    【标题】"Tomcat7, 正常, 可用, 需要JDK1.6版本" 暗示了我们讨论的核心是Apache Tomcat服务器的第七个主要版本,一个广泛使用的开源Java Servlet容器,它实现了Java EE的Web应用服务规范。此版本的Tomcat被认为稳定...

    jdk 64bit 1.6 green

    10. **并发工具**:Java Concurrency Utilities在1.6版本中进一步丰富,包含更多的并发集合类和线程池API,帮助开发者更好地编写多线程应用。 11. **日志改进**:java.util.logging框架得到提升,提供了更强大的...

    jdk+api+1.6中文版

    3. **多线程**:Java 1.6中的Thread类和synchronized关键字,以及Runnable接口,为并发编程提供了基础,同时新增了java.util.concurrent包,包含了线程池、并发集合等高级工具。 4. **网络编程**:Socket、...

    java1.6中文帮助文档

    - **Executor框架**:提供了更强大的线程池管理功能。 - **并发工具类**:新增了如`ConcurrentHashMap`、`ConcurrentLinkedQueue`等并发集合类。 - **安全性和加密**: - **加密API**:引入了更多的加密算法支持...

    JAVA_JDK1.6_手册_CN.chm

    1. **java.util.concurrent**:这个包包含了大量的并发工具类,如线程池、并发集合等,有助于编写高效的多线程程序。 2. **java.nio**:非阻塞I/O包,提供通道(Channels)和选择器(Selectors),用于高效率的I/O...

    1.6JDK 32/64安装包

    例如,增强的并发工具包`java.util.concurrent`提供了线程池、同步器和并发容器,帮助开发者更高效地编写多线程程序。 在性能方面,JDK 1.6的HotSpot JVM引入了Client和Server两种模式,分别针对桌面应用和服务器...

    tomcat 1.6

    【标题】:“Tomcat 1.6”是一个关于Apache Tomcat服务器早期版本的讨论,这里主要聚焦于Tomcat 6.0.18这一特定发行版。 【描述】:Apache Tomcat是Apache软件基金会的一个开源项目,它是一个实现了Java Servlet和...

    Java SE API JDK 1.6中文版以及1.8英文版

    - 1.6版本强化了并发工具类库,如`java.util.concurrent`包,提供了线程池、Future、Callable和CyclicBarrier等工具,便于多线程编程。 - 1.8版本中,Fork/Join框架的引入进一步优化了并行计算,使得大型任务可以...

Global site tag (gtag.js) - Google Analytics