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);
}
}
分享到:
相关推荐
线程池的多线程并发控制技术研究.caj 线程池的多线程并发控制技术研究.caj 线程池的多线程并发控制技术研究.caj
java多线程并发查询数据库,使用线程池控制分页,并发查询。
Java并发编程常见知识点源码集锦,涉及到对象锁,Executors多任务线程框架,线程池等示例,列出一些源码包中包括的内容: volatile关键字的非原子性、volatile关键字的使用、AtomicInteger原子性操作、线程安全小...
文件如果特别小,而自己网络又非常好的情况下,不建议使用线程池进行下载,因为线程任务的创建也会浪费一些时间和性能!因为写这个程序是为了更快的下载一些4K壁纸,所以传入的url只能是直链,当然 可以根据自己的...
java线程池Executors实现数据批量操作。 批量异步Executors处理数据,实现限流操作,QPS限流。 线程池调用第三方接口限流实现逻辑。 案例适合: 1.批量处理大数据。 2.数据批量导出。 3任务数据异步执行。 4.多线程...
Java 并发学习笔记: 进程和线程, 并发理论, 并发关键字, Lock 体系, 原子操作类, 发容器 & 并发工具, ...此外,Java还具有丰富的类库和广泛的社区支持,开发者可以利用这些资源快速构建应用程序。Java类库
java线程池处理多并发,所有进程执行完后再统一处理结果线程池配置类多线程并行demo 线程池配置类 import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation....
1.使用new Thread()创建线程的弊端: 每次通过new Thread()创建对象...可有效控制最大并发线程数,提高系统资源的使用率,同时避免过多资源竞争,避免堵塞。 提供定时执行、定期执行、单线程、并发数控制等功能。
Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠 Java线程:线程的调度-优先级 Java线程:线程的调度-...
Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠 Java线程:线程的调度-优先级 Java线程:线程的...
JUC 线程池管理线程的创建、复用和销毁,有效地减少了线程频繁创建和销毁所带来的开销,从而提高了系统资源的利用率。 不了解并发编程和线程池的开发者可能会面临多线程竞争、死锁等问题。通过深入了解 Java 并发...
为了防止资源不足,服务器应用程序需要采取一些办法来限制任何给定时刻处理的请求数目,尽可能减少创建和销毁线程的次数,特别是一些资源耗费比较大的线程的创建和销毁,尽量利用已有对象来进行服务,这就是“池化...
而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器...
内容概要:最新2023年Java高并发多线程后端面试题整理, 包含线程池,并发集合,volatile,CountDownLatch,Semaphore,Phaser,AQS,ReentrantLock,ReentrantLock等等问题, 用简洁明了的语言,通俗易懂地阐述了高...
java线程池的源码分析以及各种池之间的对比;
在线程池中维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。使用线程池不仅能够保证内核的充分利用,还能防止过分调度。WEB服务器完成网页请求这样的任务...
主要介绍了使用java的HttpClient实现多线程并发的相关资料,需要的朋友可以参考下
Java并发编程相关源码集 包括多任务线程