21、池化技术和线程池的使用(三大方法,7大参数,4种拒绝策略)

news2025/1/16 8:08:56

池化技术和线程池的使用(三大方法,7大参数,4种拒绝策略)

  1. 池化技术:事先准备好一些资源,有需要用就拿,用完再还回来

 

  1. 线程池的好处:

*降低资源的消耗:线程的不停的创建销毁会十分浪费资源

*提高响应的速度

*方便管理

线程复用,可以控制最大并发数,以及管理线程

 

  1. 线程池的学习路线:(三大方法,7大参数,4种拒绝策略)

第一步:三大方法(线程池的三大方法(Exector工具类下有三大方法))

阿里巴巴规范:(线程池最好使用ThreadPoolExecutor,而不是Executors)

方法1、单个线程(创建只有一个单个线程的线程池方法)

!!!使用线程池后就要用线程池来创建线程(线程池的.execute()),线程池使用完后,程序结束,还必须要关闭线程池(.shutdown)(如何确保程序一定结束(放到finally咯))

 

只有一个线程在操作

 

方法2、线程池有固定数的多个线程(也就是有多个并发)

 

有5个线程在执行了

 

方法3、线程池的线程随着我们并发的线程多少来增加

 

可以看到最多有30个并发线程了

 

package org.example.threadpoolexecutor;



import java.util.concurrent.ExecutorService;

import java.util.concurrent.Executors;



public class TestThreadPoolExecutorThere {

    public static void main(String[] args) {

//        ExecutorService threadPool = Executors.newSingleThreadExecutor();//单个线程的线程池

//        ExecutorService threadPool = Executors.newFixedThreadPool(5);//设定固定线程个数的线程池

        ExecutorService threadPool = Executors.newCachedThreadPool();//可以随着使用的线程个数变化而而变化的线程池

        try {

            for (int i = 1; i <=100 ; i++) {

                    threadPool.execute(()->{

                        System.out.println(Thread.currentThread().getName()+"=>ok");

                    });

            }

        } catch (Exception e) {

            throw new RuntimeException(e);

        } finally {

            threadPool.shutdown();

        }

    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/10342.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【LeetCode 力扣】2.两数相加 Java实现 模拟 递归

题目链接&#xff1a;2.两数相加 1 原题描述&#xff1a; 2 解题思路 初看此题&#xff0c;其实并不难理解&#xff0c;我们只需要简单对加法过程进行一个模拟&#xff0c;即可完成。那么我们应该怎么模拟呢&#xff1f;首先观察题目&#xff0c;链表是采用的 逆序 存储&…

[旭日X3派] 初识篇 - 01

简单介绍一下 旭日X3派&#xff1a; 地平线旭日️ X3 派是一款面向生态开发者的嵌入式 AI 开发板&#xff0c;接口兼容树莓派&#xff0c;具有 5 TOPS 端侧推理与 4 核 ARM A53 处理能力。 可同时多路 Camera Sensor 的输入并支持 H.264/H.265 编解码。 结合地平线的高性能 A…

什么是JUC

什么是JUC JUC指的是&#xff1a;Java里的三个包 java.util.concurrentjava.util.concurrent.atomic&#xff1a;原子性java.util.concurrent.locks&#xff1a;lock锁回顾线程和进程 进程 程序执行的一次过程&#xff0c;一个进程包含一个或多个线程。进程是资源分配的单位 …

【毕业设计】深度学习行人重识别系统 - person reid

文章目录0 前言1 技术背景2 技术介绍3 重识别技术实现3.1 数据集3.2 Person REID3.2.1 算法原理3.2.2 算法流程图4 实现效果5 部分代码6 最后0 前言 &#x1f525; Hi&#xff0c;大家好&#xff0c;这里是丹成学长的毕设系列文章&#xff01; &#x1f525; 对毕设有任何疑问…

Linux NetCore下Pdf转图片 内存溢出

Linux NetCore下Pdf转图片 内存溢出Linux PDF转图片异常查看libgdiplus版本解决方案NetCore 3.1下面调用Pdf转图片的组件&#xff0c;在本地windows环境下转换正常&#xff0c;但是到容器里面就会转换失败&#xff0c;查看命令行日志可以看到如下错误。 Linux PDF转图片异常 …

web期末大作业:基于html+css+js制作 学校班级网页制作----校园运动会 4页

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 校园班级网页设计 | 我的班级网页 | 我的学校 | 校园社团 | 校园运动会 | 等网站的设计与制作 | HTML期末大学生网页设计作业 HTML&#xff1a;结构 …

source 命令的用法(与 sh Filename、./Filename的区别)

source 命令简单来说&#xff0c;就是读取脚本里的语句&#xff0c;并在当前Shell中执行&#xff0c;脚本里面所有新建、改变变量的语句都会保存在当前shell里。 目录 1、source 命令的使用方法 2、source命令的妙用 3、source Filename 和 ./Filename的区别 1、source 命令…

12期数据分析-第5次数据分析作业-pandas数据清洗--第 课讲解

1.册除每列都为NAN的数据&#xff0c;以下操作正确的是单法题 选B&#xff1a; 2.&#xff1f;离散化就是将连续值进行分区间 选C 3.以下方法中可以修改索引名称的是多选 选ABCD。 df.index.map({0:‘A1’,1:‘B1’,2:‘C1’}) 4.&#xff1f;求4个人的平均分数 选BCD .…

docker安装es+mac安装Kibana工具

一、docker安装es 1、下载镜像 docker pull elasticsearch:7.9.0下载完后&#xff0c;查看镜像 docker images​​ 2、启动镜像 docker network create esnetdocker run -d --name es -p 9200:9200 -p 9300:9300 --network esnet -e "discovery.typesingle-node&…

2022 弱口令安全实验室招新赛-靶机挑战记录

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一、ubuntu 代码执行getshell获取webshell二、server 2008r2EW 流量代理ms17010三、AD机器账号伪造漏洞域内hash传递攻击登录域控总结前言 2022 弱口令安全实验…

Chakra UI Pro (Marketing + Application UI + ECommerce)

Chakra UI Pro (Marketing Application UI ECommerce) 快速创建可访问的 React 应用 程序 Chakra UI 是一个简单、模块化且可访问的组件库&#xff0c;它为您提供构建 React 应用程序所需的构建块。 更少的代码。更快的速度 花更少的时间编写 UI 代码&#xff0c;将更多的时间…

ZYNQ之嵌入式学习----开篇实验Hello World

1 ZYNQ 嵌入式系统的开篇实验Hello World 阅读本文需先学习: FPGA学习----Vivado软件使用 1.1 ZYNQ 嵌入式系统开发流程 创建Vivado工程使用IP Integrator 创建 Processor System生成顶层HDL生成比特流&#xff0c;导出到SDK在SDK中创建应用工程板级验证 开篇实验任务是在 …

【前端笔记】小记一次Antd Vue 1.x (for vue2.x) icons组件按需引入的实现

因为项目有样式规范要求&#xff0c;和规范最相似的就是antd了&#xff0c;再加上项目用的是2.x&#xff0c;所以使用antd 1.x版本进行开发。项目完成后&#xff0c;理所应当对打包进行优化&#xff0c;于是遇到了icons组件全量引入的问题&#xff0c;查找了资料实现后特地记录…

R语言作业--第六章判别分析

目录 思考题4&#xff09;原题目&#xff1a;贝叶斯判别的基本思想是什么&#xff1f; 练习题第3题:以舒张期血压和讯将胆固醇含量预测被检查者是否患冠心病&#xff0c;测得15名冠心病人和16名健康人的舒张压。X1及血浆胆固醇含量X2&#xff0c;结果如表6-4。 练习题第4题:…

Day03 leecode#有效的括号#合并两个有序链表

题目描述&#xff1a; 有效的括号 给定一个只包括 ‘(’&#xff0c;’)’&#xff0c;’{’&#xff0c;’}’&#xff0c;’[’&#xff0c;’]’ 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。 左括号必…

大模型相关资料整理

1. 大模型的挑战 GPT-3 175B模型的参数如下&#xff1a; 网络层&#xff08;Number of layers&#xff09;: 96 句子长度&#xff08;Sequence length&#xff09;: 2048 隐藏层大小&#xff08;Hidden layer size&#xff09;: 12288 词汇表&#xff08;Vocabulary size&#…

java高级--SpringBoot篇

目录 一、什么是SpringBoot 二、SpringBoot的特点 三、springboot快速入门 四、介绍配置文件的种类 五、开发环境配置文件的切换 六、读取springboot配置文件中的内容 七、Springboot注册web三大组件 八、SpringBoot的底层原理 8.1 包扫描的原理 8.2 springboot自动装配原理…

如何备考高级软考的系统架构设计师?

架构设计师是软考高级科目&#xff0c;比较难&#xff0c;每一年的通过率在15%左右。 不过软考它的特点是考察的深度不深&#xff0c;但是范围比较广&#xff0c;特别是高级&#xff0c;对项目经验比较看重&#xff0c;如果没有项目经验的朋友&#xff0c;一定要多准备项目素材…

springboot10:web开发常用功能(拦截器,文件上传,异常处理)

一.拦截器 1.使用 访问任何请求&#xff0c;都只有登录才能访问&#xff0c;挨个写入请求太困难&#xff0c;使用拦截器机制handlerIntercepter&#xff08;prehandle方法&#xff0c;posthandle方法,afterCompletion方法&#xff09;编写一个拦截器实现handlerInterceptor接…

算法与数据结构 - 字节跳动笔试题

😄这里将持续更新接下来做过的字节跳动公司相关的笔试题,包括网上收集的秋春招笔试题、以及自己参加的字节举办的编程赛的题目。 🚀导航: ID题目描述NO.1小红走迷宫简单、按逻辑写即可ACNO.2铺水管dfs回溯、注意剪枝才能ACNO.3喵汪故事借助二分才能ACNO.4小超的游戏pytho…