import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class ThreadPoolExecutorUtil {
// 池中所保存的线程数,包括空闲线程
private static final int corePoolSize = 10;
// 池中允许的最大线程数
private static final int maximumPoolSize = 100;
// 当线程数大于核心时,此为终止前多余的空闲线程等待新任务的最长时间(目前设为1800秒即30分钟)
private static final int keepAliveTime = 1800;
// 执行前用于保持任务的队列
private static final int blockingQueueSize = 10;
// 参数的时间单位
private static final TimeUnit unit = TimeUnit.SECONDS;
private static ThreadPoolExecutor threadPool = null;
/**
* 获取线程池的单例
* @return
*/
public static ThreadPoolExecutor getPoolInstance() {
if (threadPool == null) {
synchronized (ThreadPoolExecutor.class) {
// 实例化线程池
threadPool = new ThreadPoolExecutor(corePoolSize,
maximumPoolSize, keepAliveTime, unit,
new ArrayBlockingQueue<Runnable>(blockingQueueSize),
new ThreadPoolExecutor.DiscardOldestPolicy());
}
}
// 返程线程池的实例化对象
return threadPool;
}
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
// 实例化线程池
ThreadPoolExecutor threadPool = ThreadPoolExecutorUtil
.getPoolInstance();
// 触发并行线程的运行
threadPool.execute(new SingleThread(i+""));
}
}
}
class SingleThread implements Runnable {
private String name = null;
public SingleThread(String name) {
this.name = name;
}
public void run() {
System.out.println("parallel run..." + name);
}
}
分享到:
相关推荐
在Java开发中,处理大批量数据时,合理利用线程池可以显著提高程序的执行效率和资源利用率。本文将深入探讨如何在Java中使用线程池来查询大量数据,以及这样做的好处和实现方法。 首先,理解线程池的概念至关重要。...
线程池的多线程并发控制技术研究.caj 线程池的多线程并发控制技术研究.caj 线程池的多线程并发控制技术研究.caj
Java线程池是Java并发编程中的重要组成部分,它在多线程编程中扮演着至关重要的角色,有效地管理和调度线程资源,提高了程序的性能和稳定性。本资源包含了一个经典的Java线程池实现,适用于大型项目,能帮助开发者...
java线程池是一种高效的并发编程技术,可以帮助开发者更好地管理线程资源,提高系统的性能和可靠性。然而,在使用java线程池时,一个常见的问题是:使用完线程池后到底要不要关闭?本文将通过实例代码和详细解释,...
在Java等编程语言中,线程池通过有效地管理和复用线程资源,避免了频繁创建和销毁线程带来的开销,提升了系统性能。下面将详细讲解线程池的核心概念、工作原理以及如何应用于文件上传场景。 1. **线程池核心概念**...
Java 线程池是 Java 语言中的一个重要概念,它允许开发者创建和管理多个线程,以提高程序的并发性和性能。下面是对给定文件的解析,包括 title、description、标签和部分内容的解析。 标题解析 标题 "Java 线程池...
本文将详细探讨如何利用Java的多线程技术和线程池来实现并发查询数据库,以及相关的文件`BatchDataUtil.java`和`BatchDataRunnable.java`可能涉及的关键知识点。 ### 1. 多线程并发查询 多线程并发查询允许我们将一...
Java线程池是一种高效管理并发任务的机制,它允许开发者预先配置一定数量的线程,以便在处理多个并发任务时能有效地复用这些线程,从而避免了频繁创建和销毁线程带来的开销。在Java中,`java.util.concurrent`包下的...
Java线程池是一种高效管理线程的技术,它允许开发者预定义一组线程,根据任务的需要灵活调度,而不是每次需要执行任务时都创建新的线程。这种设计模式大大提高了系统的性能,减少了系统资源的消耗,特别是在高并发...
在学习这些知识时,初学者可以通过创建简单的多线程程序来实践,比如实现一个生产者消费者模型,或者利用线程池处理并发请求。对于XML解析,可以尝试读取和解析配置文件,或者通过XML与Java对象之间的绑定进行数据...
线程池会调度线程来处理这些任务,避免了因大量并发连接导致的线程创建和销毁开销。 `TCPService.java`可能是一个实现了处理TCP连接逻辑的类。它可能会继承自`Runnable`接口,重写`run()`方法以处理客户端发送的...
Java线程池是一种高效管理线程的机制,它允许开发者预先创建一定数量的线程,然后根据需求将任务提交到线程池中进行执行。线程池的核心在于它能够有效地控制运行的线程数量,避免因为频繁创建和销毁线程而产生的性能...
除了基本的线程创建,Java还提供了synchronized关键字用于线程同步,防止多个线程同时访问共享资源导致数据不一致。synchronized可以修饰方法或代码块,当一个线程正在执行synchronized代码时,其他线程必须等待。 ...
Java线程池是Java并发编程中的重要组成部分,它在多线程编程中扮演着至关重要的角色,有效地管理和调度了大量的并发任务。线程池通过预先创建并维护一组可重用线程,来提升程序的性能和效率,避免了频繁地创建和销毁...
Java线程池是一种高级的多线程处理框架,它是Java并发编程中非常重要的一个组件。线程池的原理和实现涉及到操作系统调度、内存管理和并发控制等多个方面。理解线程池的工作原理有助于优化程序性能,避免过度创建和...
三、Java线程池 1. ExecutorService接口:线程池的核心接口,提供了创建、管理和控制线程池的方法,如execute()用于提交任务,shutdown()用于关闭线程池。 2. ThreadPoolExecutor类:实现了ExecutorService接口,...
- `ExecutorService`和`ThreadPoolExecutor`是Java线程池的实现,可以有效地管理线程资源,避免频繁创建和销毁线程的开销。 4. **线程池的介绍及简单实现** - 线程池可以预先创建一定数量的线程,处理多个任务,...
Java 程序中频繁地创建和销毁线程,会带来很大的性能...总之,线程池是Java并发编程中非常重要的工具,通过合理利用线程池,可以有效地管理线程,提高系统的资源利用率,降低系统的响应时间,提高系统的并发处理能力。
Java线程池是Java并发编程中的重要组成部分,它在多线程和高并发场景下扮演着关键角色。本文将深入探讨Java线程池的源码分析,并对比不同类型的线程池,以帮助开发者更好地理解和利用这一强大的工具。 首先,我们要...
Java线程池是一种高效管理并发任务执行的机制,它通过预先创建并维护一定数量的线程,从而避免了频繁地创建和销毁线程所带来的性能开销。在Java中,线程池的实现主要依赖于`java.util.concurrent`包中的`...