- 浏览: 54322 次
- 性别:
- 来自: 洛阳
文章分类
最新评论
四种线程池的特点如下所示:
1、缓存型的
特点:线程池无限大,当处理第二个线程时若第一个处理完,则会继续使用第一个线程,并且该线程池如果长度超过处理需要,可以收回空闲线程,反之,则新建线程
2、固定大小的
特点:线程池大小固定,如果线程池大小为3,(也就是每次同时只能处理三个,超出三个之外的就需要等待)
3、任务型的
特点:当实现的是scheduleAtFixedRate或者schedule时,支持定时和周期性任务,如果实现的是execute的话则为普通线程池可自定义线程池大小
4、单线程线程池
特点:单线程的线程池,一次最大处理量为了,超过的需要等待,不能定义线程池大小
四种线程池的特点的演示代码如下:
1、缓存型的
cachedThreadPool
特点:线程池无限大,当处理第二个线程时若第一个处理完,则会继续使用第一个线程,并且该线程池如果长度超过处理需要,可以收回空闲线程,反之,则新建线程
2、固定大小的
fixedThreadPool
特点:线程池大小固定,如果线程池大小为3,(也就是每次同时只能处理三个,超出三个之外的就需要等待)
3、任务型的
scheduledThreadPool
特点:当实现的是scheduleAtFixedRate或者schedule时,支持定时和周期性任务,如果实现的是execute的话则为普通线程池可自定义线程池大小
4、单线程线程池
singleThreadExecutor
特点:单线程的线程池,一次最大处理量为了,超过的需要等待,不能定义线程池大小
四种线程池的特点的演示代码如下:
package test; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; public class Thread_test { static ExecutorService es = Executors.newCachedThreadPool();//当前线程池特性为,线程池无限大,当处理第二个线程时若第一个处理完,则会继续使用第一个线程,并且该线程池如果长度超过处理需要,可以收回空闲线程,反之,则新建线程 //static ExecutorService es = Executors.newFixedThreadPool(3);//因为线程池大小为3,(也就是每次同时只能处理三个,超出三个之外的就需要等待) //static ExecutorService es = Executors.newScheduledThreadPool(3);//该线程池支持定时以及周期任务(A块测试代码可以测试普通多线程的情况,B块测试代码,可以测试定时任务) //static ExecutorService es = Executors.newSingleThreadExecutor();//单线程的线程池 public static void doTest() { // A块测试区 (CachedThreadPool,FixedThreadPool) es.execute(new Runnable() { public void run() { System.out.println("执行了--"); try { Thread.sleep(2000);//线程休眠2秒 } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); // B块测试区 (ScheduledThreadPool) // ((ScheduledExecutorService) es).scheduleAtFixedRate(new Runnable() { // int i=1; // @Override // public void run() { // // int time=3*i; // System.out.println("距离第一次打印已经过了"+time+"秒"); // i++; // } // //}, 3, TimeUnit.SECONDS);//延迟三秒执行(定时执行的方法为schedule) // }, 1, 3, TimeUnit.SECONDS);//每三秒执行一次 } public static void main(String[] args) { for (int i = 0; i < 12; i++) { doTest(); } } }
发表评论
-
Condition
2017-01-03 16:58 0condition的应用 -
java对sftp文件进行上传、下载、删除等操作,附详细demo
2016-12-22 18:01 2087这是自己总结的一个类,包含连接sftp,上传,下载等操作,附件 ... -
servlet监听器功能讲解及代码案例
2017-07-08 16:54 620servlet监听器功能讲解及代码案例 监听器的功能很强大, ... -
web.xml之session超时设置 以及设置session超时的几种方法
2016-10-20 16:39 1189web.xml之session超时设置 先说正题,web. ... -
web.xml之过滤器详解 以及常用过滤器demo
2016-10-20 14:15 2716web.xml之过滤器详解 一 ... -
poi导出excel清晰 步骤详解
2016-10-14 14:08 843poi导出excel清晰 步骤详解 一、本次生成excel ... -
struts2下载文件最简化版清晰详解
2016-10-14 11:20 614struts2下载文件最简化版清晰详解 一、应用场景如下: ... -
poi解析excel步骤详解
2016-10-14 10:42 2115poi解析excel步骤详解 一、本次解析excel应用场景 ... -
struts2文件上传详解
2016-10-13 11:26 806struts2文件上传详解 一、jsp代码 <fo ... -
ThreadLocal用法详解
2016-09-29 10:44 1602ThreadLocal用法详解 1.ThreadLocal的 ... -
JSONObject、JSONArray、xml的常用操作
2016-09-28 16:33 1364JSONObject、JSONArray、xml的常用操作 ... -
Rsa签名算法详解
2016-09-22 09:48 4628Rsa签名算法详解 签名生成规则与验证签名规则如下: ... -
Quartz定时任务的实现及详解
2016-09-21 18:03 2161Quartz定时任务的实现及详解 平常工作中经常遇到写定时任 ... -
操作json
2016-09-18 13:01 641总是记不住一些零碎的知识点,这次开个专栏来记录,不定期更新: ... -
日期类型转换
2016-09-18 12:50 531总是记不住一些零碎的知识点,这次开个专栏来记录,不定期更新: ... -
配置文件的读取与写入
2016-09-14 17:00 649读取配置文件: public static void m ... -
HttpPoster接口调用
2016-09-13 13:47 1623工作中经常用到的东西,这也是自己在公司的基础上改造的,感觉挺好 ... -
md5加密
2016-09-13 13:39 594md5工具类如下所示,可以直接拿走用,分享记录一下 pack ... -
AES加密与解密
2016-09-13 13:37 477这个其实是我们项目里面的一个工具类,给大家做一下分享 aes ... -
循环map取值的方法
2016-09-08 13:00 1543循环map取值的方法,如下所示: 方法一: Map< ...
相关推荐
本资源包含了四种不同的Java连接池实现的测试代码,这些代码与相关的博客文章配套,可以帮助开发者更深入地理解各种连接池的工作原理和使用方式。 首先,我们来详细了解一下四种常见的Java连接池: 1. **HikariCP*...
总结来说,这个代码包提供了C++中跨平台线程池的实现,包括线程池的创建、任务调度、线程复用等功能,通过`spthread.h`进行底层线程操作的封装,`testthreadpool.cpp`作为测试代码验证其功能。理解并运用这些知识点...
标签"源码"和"工具"暗示了这个话题可能涉及到线程池的底层实现代码,并且可能提供了一个实用的工具或者模板,可以帮助开发者快速搭建自己的线程池框架。 尽管`Vector`在Java集合框架中已经被`ArrayList`和`...
在Windows编程环境中,Visual C++(VC)提供了一种创建和管理线程的方式,但有时开发者需要更高级的功能,比如线程池和任务优先级控制。本文将详细讲解如何在VC中自定义线程池,以及它所带来的优势与潜在的风险。 ...
4. **`TestMyThreadPool.cpp`分析**:这个测试文件可能包含了线程池的使用示例,例如创建线程池,向线程池提交任务,以及等待所有任务完成的代码。我们可以通过查看这个文件了解线程池的接口设计,如`submit_task()`...
### 线程池分析与方案设计 #### 线程池尺寸与性能分析 在计算机科学领域,...通过对硬件配置、任务特性、系统负载等多个方面的综合考量,并结合实际测试结果,我们可以为特定的应用场景找到最佳的线程池配置方案。
下面我们将通过分析给定的代码来理解如何使用Python实现一个简单的线程池模型。 首先,我们需要导入必要的模块。`threading`模块提供了线程相关的功能,`queue`模块用于管理任务队列,`os`模块则用来获取当前目录下...
"线程应用测试.e"是另一个源代码文件,很可能是用于测试线程池功能的示例程序。通过运行和调试这个测试程序,开发者可以直观地看到线程池在实际应用中的表现,了解其功能是否正常,以及性能如何。 "优易多线程池.ec...
`FThreadTest`可能是测试线程池功能的代码文件,可能包含对线程池API的调用,如创建任务、监控线程池状态以及执行结果的验证等。通过分析这个代码,可以更好地理解线程池在实际项目中的应用。 总的来说,理解和...
【IocpUdp类详解】 IocpUdp是一个基于Windows操作系统的用户态I/O完成端口(I/O Completion Ports, IOCP)实现的UDP通信类。...同时,由于其清晰的代码结构,IocpUdp也是学习异步I/O和线程池管理的一个良好实例。
线程池是一种多线程处理形式,它将预先创建并维护一定数量的工作线程,用于执行来自客户端的任务请求。在"C++写的线程池,环境是ubuntu(Linux)"这个项目中,我们可以深入探讨以下几个核心知识点: 1. **C++线程库...
在本教程中,我们将深入探讨Java线程池的工作原理、优点以及如何在Android环境中实现和使用线程池。 线程池的原理: 1. **线程池初始化**:首先,开发者需要根据应用需求创建一个线程池。Java中提供了`java.util....
在代码库"dynamic-tp-master"中,可能包含了以下内容:源代码、配置示例、单元测试、文档以及构建脚本等。通过查看源代码,我们可以学习如何实现这样一个线程池框架,包括如何设计线程池类、如何使用配置中心接口、...
这些特性使得Java可以与C/C++等原生代码交互,以及在运行时动态修改类的行为。 通过研究这些源代码,开发者不仅能深化对JVM的理解,还能学习到如何有效地利用JVM的特性进行程序优化,提升系统的稳定性和性能。无论...
6. **测试与调试**:源码中可能包含了测试用例和调试工具,通过运行这些测试,可以验证线程池和重试框架的功能正确性,同时学习作者的测试思路。 通过深入研究鱼刺线程池和拨号重试框架的源码,开发者不仅可以掌握...
本测试DEMO涵盖了并发编程的关键组件,包括线程池、锁、队列、信号以及CAS(Compare-and-Swap)操作。下面我们将逐一深入探讨这些知识点。 首先,线程池是管理线程的一种机制,它避免了频繁创建和销毁线程带来的...
下面,我们将详细讨论与"java面试题测试代码"相关的知识点。 1. **基础语法**: - 数据类型:Java有八种基本数据类型,分为整型、浮点型、字符型和布尔型。 - 变量:声明并初始化变量是程序的基本元素。 - 控制...
本资料包“JDBC模块化应用测试代码.zip”显然包含了使用JDBC进行数据库操作的实例代码,特别是结合了反射和线程池技术,这将使应用程序更加高效和灵活。 首先,让我们详细了解一下JDBC的基本概念和流程。JDBC主要由...
通过实际代码,学习者能理解类与对象的关系,以及如何利用这些特性来解决问题。 4. **设计模式**:在软件工程中,设计模式是解决问题的标准化方法。示例代码可能包含常见设计模式的应用,如工厂模式、单例模式、...
此外,还可能包含了一些用于测试和演示线程池功能的样例代码。 使用C++11的线程池,开发者可以更加灵活地处理并发任务,尤其是在处理大量并发请求或I/O密集型操作时,线程池可以显著提高程序性能。在VS2013这样的...