java中如何使用线程池
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇文章给大家分享的是有关java中如何使用线程池,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。public ThreadPoolExe
千家信息网最后更新 2026年11月02日java中如何使用线程池
本篇文章给大家分享的是有关java中如何使用线程池,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueueworkQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler) { if (corePoolSize < 0 || maximumPoolSize <= 0 || maximumPoolSize < corePoolSize || keepAliveTime < 0) throw new IllegalArgumentException(); if (workQueue == null || threadFactory == null || handler == null) throw new NullPointerException(); this.acc = System.getSecurityManager() == null ? null : AccessController.getContext(); this.corePoolSize = corePoolSize; this.maximumPoolSize = maximumPoolSize; this.workQueue = workQueue; this.keepAliveTime = unit.toNanos(keepAliveTime); this.threadFactory = threadFactory; this.handler = handler; } 构造函数的参数含义如下:corePoolSize:指定了线程池中的线程数量,它的数量决定了添加的任务是开辟新的线程去执行,还是放到workQueue任务队列中去;maximumPoolSize:指定了线程池中的最大线程数量,这个参数会根据你使用的workQueue任务队列的类型,决定线程池会开辟的最大线程数量;keepAliveTime:当线程池中空闲线程数量超过corePoolSize时,多余的线程会在多长时间内被销毁;unit:keepAliveTime的单位workQueue:任务队列,被添加到线程池中,但尚未被执行的任务;它一般分为直接提交队列、有界任务队列、无界任务队列、优先任务队列几种;threadFactory:线程工厂,用于创建线程,一般用默认即可;handler:拒绝策略;当任务太多来不及处理时,如何拒绝任务;
package com.test;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.LinkedBlockingQueue;import java.util.concurrent.RejectedExecutionHandler;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;public class TestThreadPool { public static void main(String[] args) { /** * 线程数量 * 最大数量 超标后会进入队列、队列超标后触发策略 * * ArrayBlockingQueue 有界队列 * LinkedBlockingQueue 无界队列 * SynchronousQueue 同步队列 * * 执行线程超标策略 RejectedExecutionHandler * ThreadPoolExecutor.AbortPolicy:丢弃任务并抛出RejectedExecutionException异常。 * ThreadPoolExecutor.DiscardPolicy:也是丢弃任务,但是不抛出异常。 * ThreadPoolExecutor.DiscardOldestPolicy:丢弃队列最前面的任务,然后重新尝试执行任务(重复此过程) * ThreadPoolExecutor.CallerRunsPolicy:由调用线程处理该任务 * 自定义 * Executors.newCachedThreadPool(); //创建一个缓冲池,缓冲池容量大小为Integer.MAX_VALUE * Executors.newSingleThreadExecutor(); //创建容量为1的缓冲池 * Executors.newFixedThreadPool(int); //创建固定容量大小的缓冲池 * */ ThreadPoolExecutor pool=new ThreadPoolExecutor(5, 5, 1, TimeUnit.SECONDS, new ArrayBlockingQueue(2),new RejectedExecutionHandler() { @Override public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) { System.out.println(r+"丢弃了"); } }); for(int i=0;i<7;i++) { Runnable run=new TestThread(i); pool.execute(run); } //pool.shutdown(); }}class TestThread implements Runnable { private int i; public TestThread(int i) { this.i=i; } @Override public void run() { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName()+" "+i); }}以上就是java中如何使用线程池,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
线程
任务
队列
数量
缓冲
最大
容量
策略
参数
大小
更多
知识
篇文章
处理
实用
函数
单位
含义
尚未
就是
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
耶加雪菲
手磨咖啡
河南云网互联网络科技有限公司
云信互联网科技有限公司
科技互联网项目
互联网科技金融
万易互联网科技
互联网科技小贷
科技伦理 互联网公司
中正互联网科技招聘
海南购全球互联网科技
中国科技互联网公司收入
互联网金融中的现代科技
宁夏科技产业互联网案例
搜狐科技互联网
燊美集互联网科技有限公司
用友工业互联网科技发展
上海互联网科技公司ppt
广州智享互联网科技
互联网的科技体现在哪里
科技互联网项目
互联网科技logo设计
互联网科技咨询
互联网科技有哪些公司
保险科技服务互联网营销体系
伍佰万互联网科技怎么赚钱
启辰互联网科技
科技互联网经济论坛
优雇互联网科技有限公司
中国主要互联网科技公司