线程池学习

news/2024/11/29 13:34:55/

一、线程池基础


1、什么是线程池
用一句话来概述就是:线程池是指在初始化一个多线程应用程序过程中创建一个线程集合,然后再需要执行新的任务时重用这些线程而不是新建线程。

2、为什么使用线程池
使用线程池最大的原因就是可以根据系统的需求和硬件环境灵活的控制线程的数量,且可以对所有线程进行统一的管理和控制,从而提高系统的运行效率,降低系统的运行压力。

3、线程池有哪些优势
降低资源消耗:线程和任务分离,提高线程重用性
控制线程并发数量,降低服务器压力,统一管理所有线程
提高系统响应速度。假如创建线程用的时间为T1,执行任务的时间为T2,销毁线程的时间为T3,那么使用线程池就免去了T1和T3的时间。

二.线程池的创建

线程池的创建有两种,一种是规定线程数量,另一种是不规定,封顶线程数为int类型的极限

1.不规定线程的个数,直接为int的极限

java">//创建线程池ExecutorService pool1= Executors.newCachedThreadPool();//2.提交任务pool1.submit(new MyRunable());pool1.submit(new MyRunable());pool1.submit(new MyRunable());pool1.submit(new MyRunable());pool1.submit(new MyRunable());//销毁线程池pool1.shutdown();

因为我们开启了五个任务,所以线程的个数最多就是5个,然后我们再来尝试一下不规定线程个数的情况

当我们对线程池有了最大线程的规定的时候,线程的最大数量就是3不会因此发生改变 ,因此我们在项目中也可以实现线程池的应用,在服务器中开一个线程池去处理每一次客户的请求

java">ExecutorService pool2=Executors.newFixedThreadPool(3);//2.提交任务pool2.submit(new MyRunable());pool2.submit(new MyRunable());pool2.submit(new MyRunable());pool2.submit(new MyRunable());pool2.submit(new MyRunable());//销毁线程池pool2.shutdown();

 

当你想要线程池能够睡眠一会儿的时候就可以用到这个方法

java">newScheduledThreadPool

创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行。

java">ScheduledExecutorService scheduledThreadPool= Executors.newScheduledThreadPool(3); 
scheduledThreadPool.schedule(newRunnable(){ @Override public void run() {System.out.println("延迟三秒");}
}, 3, TimeUnit.SECONDS);
scheduledThreadPool.scheduleAtFixedRate(newRunnable(){ @Override public void run() {System.out.println("延迟 1 秒后每三秒执行一次");}
},1,3,TimeUnit.SECONDS);


http://www.ppmy.cn/news/1432989.html

相关文章

人机之间的一次融合与二次融合

一次融合是指将人与机器的功能和能力进行整合,使其能够协同工作,但是人和机器仍然是相对独立的个体。而二次融合则是指将人与机器的智能、意识以及身体实体等方面进行深度融合,使得人和机器之间的关系更加紧密,甚至可能形成不可分…

Java代码基础算法练习-逆序输出-2024.04.22

任务描述: 输入10个数字(数字取值范围:0~1000),然后逆序输出。 任务要求: 代码示例: package April_2024;import java.util.Scanner;/*** 输入10个数字(限定在0~1000范围内&#x…

每日两题 / 438. 找到字符串中所有字母异位词 238. 除自身以外数组的乘积(LeetCode热题100)

438. 找到字符串中所有字母异位词 - 力扣&#xff08;LeetCode&#xff09; 记录p串每个字符出现次数 维护与p串等长的滑动窗口&#xff0c;记录其中每个字符的出现次数 每次滑动后将当前次数与p串的次数比较即可 class Solution { public:vector<int> findAnagrams(s…

用 LM Studio 1 分钟搭建可在本地运行大型语言模型平台替代 ChatGPT

&#x1f4cc; 简介 LM Studio是一个允许用户在本地离线运行大型语言模型&#xff08;LLMs&#xff09;的平台&#xff0c;它提供了一种便捷的方式来使用和测试这些先进的机器学习模型&#xff0c;而无需依赖于互联网连接。以下是LM Studio的一些关键特性&#xff1a; 脱机&am…

基于SpringBoot的“幼儿园管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“幼儿园管理系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 个人信息界面图 缴费信息管理界…

Day18-Python基础学习之多线程编程

多线程编程 # 多线程:一个进程可以开启多个线程 # 并行:同一时间做不同的工作# 多线程编程 import threading import timedef sing():while True:print("我在唱歌")time.sleep(1)def dance():while True:print("我在跳舞")time.sleep(1)def rap(msg):while…

从0到1学习typescript(更新版)

1、常用ts基本命令 &#xff08;1&#xff09;下载 npm install typescript -g&#xff08;2&#xff09;检查ts版本 tsc -v&#xff08;3&#xff09;将ts编译为js tsc index.ts2、定义变量 首先要明确一个概念&#xff0c;ts中确定了类型之后&#xff0c;就不能再修改类…

OCR文字识别在物联网中的应用

在科技飞速发展的时代&#xff0c;OCR识别与物联网技术的结合为我们带来了前所未有的便利与革新。OCR&#xff0c;即光学字符识别技术&#xff0c;是一种将纸质文档上的文字、数字等信息转化为计算机可编辑的文本格式的技术。而物联网技术则是通过网络将各种物品连接起来&#…