`

四种线程池的特性以及测试代码

阅读更多
四种线程池的特点如下所示:

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();
	}
	}
}



分享到:
评论

相关推荐

    java 四种连接池测试代码(和博文配套)

    本资源包含了四种不同的Java连接池实现的测试代码,这些代码与相关的博客文章配套,可以帮助开发者更深入地理解各种连接池的工作原理和使用方式。 首先,我们来详细了解一下四种常见的Java连接池: 1. **HikariCP*...

    c++ 跨平台线程 线程池

    总结来说,这个代码包提供了C++中跨平台线程池的实现,包括线程池的创建、任务调度、线程复用等功能,通过`spthread.h`进行底层线程操作的封装,`testthreadpool.cpp`作为测试代码验证其功能。理解并运用这些知识点...

    使用Vector实现简单线程池

    标签"源码"和"工具"暗示了这个话题可能涉及到线程池的底层实现代码,并且可能提供了一个实用的工具或者模板,可以帮助开发者快速搭建自己的线程池框架。 尽管`Vector`在Java集合框架中已经被`ArrayList`和`...

    VC 自定义的线程池

    在Windows编程环境中,Visual C++(VC)提供了一种创建和管理线程的方式,但有时开发者需要更高级的功能,比如线程池和任务优先级控制。本文将详细讲解如何在VC中自定义线程池,以及它所带来的优势与潜在的风险。 ...

    C++简单线程池例子

    4. **`TestMyThreadPool.cpp`分析**:这个测试文件可能包含了线程池的使用示例,例如创建线程池,向线程池提交任务,以及等待所有任务完成的代码。我们可以通过查看这个文件了解线程池的接口设计,如`submit_task()`...

    线程池分析与方案设计

    ### 线程池分析与方案设计 #### 线程池尺寸与性能分析 在计算机科学领域,...通过对硬件配置、任务特性、系统负载等多个方面的综合考量,并结合实际测试结果,我们可以为特定的应用场景找到最佳的线程池配置方案。

    用Python实现一个简单的线程池模型效果代码分析讲解

    下面我们将通过分析给定的代码来理解如何使用Python实现一个简单的线程池模型。 首先,我们需要导入必要的模块。`threading`模块提供了线程相关的功能,`queue`模块用于管理任务队列,`os`模块则用来获取当前目录下...

    易语言源码优易线程池.rar

    "线程应用测试.e"是另一个源代码文件,很可能是用于测试线程池功能的示例程序。通过运行和调试这个测试程序,开发者可以直观地看到线程池在实际应用中的表现,了解其功能是否正常,以及性能如何。 "优易多线程池.ec...

    多线程线程池使用 (C#3.5) 高效

    `FThreadTest`可能是测试线程池功能的代码文件,可能包含对线程池API的调用,如创建任务、监控线程池状态以及执行结果的验证等。通过分析这个代码,可以更好地理解线程池在实际项目中的应用。 总的来说,理解和...

    IocpUdp类,完整的线程池,简单的结构,便于扩展

    【IocpUdp类详解】 IocpUdp是一个基于Windows操作系统的用户态I/O完成端口(I/O Completion Ports, IOCP)实现的UDP通信类。...同时,由于其清晰的代码结构,IocpUdp也是学习异步I/O和线程池管理的一个良好实例。

    C++写的线程池,环境是ubuntu(Linux)

    线程池是一种多线程处理形式,它将预先创建并维护一定数量的工作线程,用于执行来自客户端的任务请求。在"C++写的线程池,环境是ubuntu(Linux)"这个项目中,我们可以深入探讨以下几个核心知识点: 1. **C++线程库...

    Android java 线程池

    在本教程中,我们将深入探讨Java线程池的工作原理、优点以及如何在Android环境中实现和使用线程池。 线程池的原理: 1. **线程池初始化**:首先,开发者需要根据应用需求创建一个线程池。Java中提供了`java.util....

    基于配置中心的轻量级动态线程池,内置监控告警功能,集成常用中间件线程池管理,可通过SPI自定义扩展实现

    在代码库"dynamic-tp-master"中,可能包含了以下内容:源代码、配置示例、单元测试、文档以及构建脚本等。通过查看源代码,我们可以学习如何实现这样一个线程池框架,包括如何设计线程池类、如何使用配置中心接口、...

    jvm高级特性与最佳实践第二版源代码

    这些特性使得Java可以与C/C++等原生代码交互,以及在运行时动态修改类的行为。 通过研究这些源代码,开发者不仅能深化对JVM的理解,还能学习到如何有效地利用JVM的特性进行程序优化,提升系统的稳定性和性能。无论...

    鱼刺线程池+拨号,失败重试框架源码

    6. **测试与调试**:源码中可能包含了测试用例和调试工具,通过运行这些测试,可以验证线程池和重试框架的功能正确性,同时学习作者的测试思路。 通过深入研究鱼刺线程池和拨号重试框架的源码,开发者不仅可以掌握...

    并发编程demo测试包含线程池、锁、队列、信号、cas等等

    本测试DEMO涵盖了并发编程的关键组件,包括线程池、锁、队列、信号以及CAS(Compare-and-Swap)操作。下面我们将逐一深入探讨这些知识点。 首先,线程池是管理线程的一种机制,它避免了频繁创建和销毁线程带来的...

    java面试题测试代码.zip

    下面,我们将详细讨论与"java面试题测试代码"相关的知识点。 1. **基础语法**: - 数据类型:Java有八种基本数据类型,分为整型、浮点型、字符型和布尔型。 - 变量:声明并初始化变量是程序的基本元素。 - 控制...

    JDBC 模块化应用测试代码.zip

    本资料包“JDBC模块化应用测试代码.zip”显然包含了使用JDBC进行数据库操作的实例代码,特别是结合了反射和线程池技术,这将使应用程序更加高效和灵活。 首先,让我们详细了解一下JDBC的基本概念和流程。JDBC主要由...

    第四章的 12 个示例代码工程 (1).rar

    通过实际代码,学习者能理解类与对象的关系,以及如何利用这些特性来解决问题。 4. **设计模式**:在软件工程中,设计模式是解决问题的标准化方法。示例代码可能包含常见设计模式的应用,如工厂模式、单例模式、...

    c++11线程与线程池Demo 完整vs2013工程

    此外,还可能包含了一些用于测试和演示线程池功能的样例代码。 使用C++11的线程池,开发者可以更加灵活地处理并发任务,尤其是在处理大量并发请求或I/O密集型操作时,线程池可以显著提高程序性能。在VS2013这样的...

Global site tag (gtag.js) - Google Analytics