当前位置: 首页 > news >正文

java 常⽤的线程池模式FixedThreadPool

java 常⽤的线程池模式FixedThreadPool


线程池中的线程数量是固定的。
当提交一个新任务时,如果线程池中的线程都在运行,新任务就会被放入任务队列中等待执行。
如果线程池中的所有线程都在运行,且任务队列已满,那么线程池会创建新的线程来处理新任务。
使用场景:适用于执行大量计算任务的应用程序,如大数据处理、科学计算等。

import java.util.concurrent.ExecutorService;  
import java.util.concurrent.Executors;  
  
public class FixedThreadPoolExample {  
    public static void main(String[] args) {  
        // 创建一个固定大小的线程池,包含5个线程  
        ExecutorService executorService = Executors.newFixedThreadPool(5);  
  
        // 提交10个任务给线程池执行  
        for (int i = 0; i < 10; i++) {  
            Runnable worker = new WorkerThread("" + i);  
            executorService.execute(worker);  
        }  
  
        // 关闭线程池  
        executorService.shutdown();  
    }  
}  
  
class WorkerThread implements Runnable {  
    private String command;  
  
    public WorkerThread(String command) {  
        this.command = command;  
    }  
  
    @Override  
    public void run() {  
        System.out.println(Thread.currentThread().getName() + "开始处理:" + command);  
        processCommand();  
        System.out.println(Thread.currentThread().getName() + "结束处理:" + command);  
    }  
  
    private void processCommand() {  
        try {  
            Thread.sleep(2000);  
        } catch (InterruptedException e) {  
            e.printStackTrace();  
        }  
    }  
}

在这个例子中,我们创建了一个固定大小为5的线程池,并提交了10个任务给线程池执行。由于线程池的大小是固定的,当线程池中的线程都在运行且任务队列已满时,新任务会被拒绝。因此,这个例子中,只有5个任务会被执行,其他任务会被拒绝。最后,我们关闭了线程池。

http://www.lryc.cn/news/277110.html

相关文章:

  • 双机调度算法
  • 精进单元测试技能——Pytest断言的艺术
  • 探索人工智能:深度学习、人工智能安全和人工智能
  • CHS_02.1.4+操作系统体系结构 二
  • 【python可视化大屏】使用python实现可拖拽数据可视化大屏
  • FineBI实战项目一(4):指标分析之每日订单总额/总笔数
  • 如何确定CUDA对应的pytorch版本?
  • 分布式锁3: zk实现分布式锁5 使用中间件curator
  • 扩展边界opencv
  • 开源C语言库Melon:Cron格式解析
  • vue的学习方法
  • Hive之set参数大全-2
  • C++面试宝典第17题:找规律填数
  • ubuntu查看内存使用情况
  • ES6 新增 Set、Map 两种数据结构的理解
  • 影视视频知识付费行业万能通用网站系统源码,三网合一,附带完整的安装部署教程
  • Java字符串拼接常用方法总结
  • 【2023 CSIG垂直领域大模型】大模型时代,如何完成IDP智能文档处理领域的OCR大一统?
  • Phi-2小语言模型QLoRA微调教程
  • hadoop自动获取时间
  • 【面试高频算法解析】算法练习8 单调队列
  • ATTCK视角下的信息收集:Sysmon检测
  • 02、Kafka ------ 配置 Kafka 集群
  • 2024年全球网络安全预测报告
  • Qt - QML与C++数据交互详解
  • Kettle Local引擎使用记录(一)(基于Kettle web版数据集成开源工具data-integration源码)
  • Java--业务场景:在Spring项目启动时加载Java枚举类到Redis中(补充)
  • WPF 基础入门(资源字典)
  • 文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑电氢耦合和碳交易的电氢能源系统置信间隙鲁棒规划》
  • ubuntu设定时间与外部ntp同步