线程池API,了解一下

线程池API及使用 文章目录1.1首先思考一下线程是不是越多越好?1.2 相关概念1.3线程池API - 接口和实现类1.3.1 ExeutorService API1.3.2 ScheduledExecutorService API1.4 线程池 的使用1.4.1 线程池的创建1.4.1.1 构造方法(new)创建线程池1.4.1.2 Executors工具类创建线程池1.4.1.3 线程池执行原理分析1.4.... 阅读详情

三种线程池

    public static void main(String[] args) {
//      getCachedThreadPool();
//      getSingleThreadExecutor();
        getFixedThreadPool();
    }
    private static void getFixedThreadPool() {
        //指定线程数 共享无界队列方式来运行这些线程
//      某个线程被显示的关闭之前,池中的线程将一直存在
        ExecutorService newFixedThreadPool = Executors.newFixedThreadPool(3333);
        for (int i =0 ; i <11111 ; i ++)
        {
            final  int no = i ;
            Runnable runnable = new Runnable() {
                public void run() {
                    try {
                        System.out.println("into" + no);
                        Thread.sleep(111L);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }

                }
            };
            newFixedThreadPool.execute(runnable);
            int activeCount = Thread.currentThread().activeCount();
            System.out.println("size = " + activeCount );

        }
        newFixedThreadPool.shutdown();

    }
    static void getCachedThreadPool() {
        /*
         * 创建一个缓存池大小可根据需要伸缩的线程池
         * 当前存活的线程可以自动伸缩
         */
        ExecutorService newCachedThreadPool = Executors.newCachedThreadPool();
        for (int i =0 ; i <1111120 ; i ++)
        {
            final  int no = i ;
            Runnable runnable = new Runnable() {
                public void run() {
                    try {
                        System.out.println("into" + no);
                        Thread.sleep(111L);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }

                }
            };
            newCachedThreadPool.execute(runnable);
            int activeCount = Thread.currentThread().activeCount();
            System.out.println("size = " + activeCount );

        }
        newCachedThreadPool.shutdown();

    }
    static void getSingleThreadExecutor() {
        // 创建一个单线程的线程池
        ExecutorService newSingleThreadExecutor = Executors.newSingleThreadExecutor();
        // 创建一个LinkedBlockingQueue的 一个 大小的线程池  

        for (int i = 0; i < 110; i++) {
            final int no = i;
            Runnable runnable = new Runnable() {
                public void run() {
                    try {
                        System.out.println("into" + no);
                        Thread.sleep(111L);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            };
            newSingleThreadExecutor.execute(runnable);
            System.out.println(Thread.currentThread().activeCount() + " = size");  
        }

        newSingleThreadExecutor.shutdown();
        System.out.println("thread  main end ");
    }

线程池工作机制及其原理

线程池的核心的两个队列
线程等待池,线程队列BlockingQueue
任务处理池,正在工作的Thread列表(hashset<Worker>)

线程池的核心的参数
核心池的大小:固定大小,设定好之后,线程池的稳定峰值,达到这个值之后池的线程数大小不会释放

最大处理线程池数:当线程池里面的线程数超过核心池的大小,最大处理线程池数会动态创建与回收线程池里面的线程的资源

这里写图片描述

这里写图片描述

【Rust线程池】如何构建Rust线程池、Rayon线程池用法详细解析 Rayon 是 Rust 中的一个并行计算库,它可以让你更容易地编写并行代码,以充分利用多核处理器。 Rayon 提供了一种简单的 API,允许你将迭代操作并行化,从而加速处理大规模数据集的能力。 除了这些核心功能外,它还提供构建线程池的能力。 阅读详情

相关推荐

Java线程池文档

Java 线程池学习 Reference: 《创建Java线程池》[1],《Java线程:新特征-线程池》[2], 《Java线程池学习》[3],《线程池ThreadPoolExecutor使用简介》[4],《Java5中的线程池实例讲解》[5],《ThreadPoolExecutor使用和思考》[6] [1]中博主自己通过ThreadGroup实现一个线程池(挺方便理解的),使用的是jdk1.4版本,Jdk1.5版本以上提供了现成的线程池。 [2]中介绍了java.util.concurrent.Executors类的API。 [3]中介绍了Java中线程池的类体系结构。 [4]中有ThreadPoolExecutor的实例应用。 [5]中有线程池的实例讲解,实现了一个基于线程池的端口监听服务器。★ [6]中有对源码比较细致的分析

线程池原理与API使用介绍

线程池原理与API使用简介 一、线程池原理 首先我们要明确为什么用多线程?是不是线程越多就越好?随着现代多核CPU的发展,

chenzihao36的博客 572

Windows自带线程池的使用方法的权威介绍

关于Windows API提供的线程池的权威介绍,对于如何使用线程池很有帮助。

【系统编程】线程池以及API接口简介

线程池是一种多线程编程模型,旨在优化线程的管理和复用。它包括了线程管理、任务调度和线程复用等关键功能。线程池的主要优势在于减少了线程的创建和销毁开销,提高了系统的性能和稳定性。

qq_64928278的博客 1636

故障处理:Oracle一体机磁盘故障时磁盘组重平衡失败的故障处理

摘要: Oracle Exadata一体机出现磁盘故障案例,存储节点故障灯未亮但磁盘已产生大量坏块,导致重平衡失败。文章强调了一体机硬件巡检需检查6个关键维度:节点messages日志、存储cell告警日志、CellCLI日志、ASM告警日志、ILOM日志及服务器信号灯。故障分析显示硬盘物理故障导致磁盘组冗余受损,自动修复流程受阻。文中详细记录了通过CellCLI工具排查损坏磁盘的过程,并提供了完整的故障处理流程和命令输出。文章同步发布于微信公众号"IT民工的龙马人生"和博客网站(www

提供数据库技术支持(系统优化,故障处理,安装升级,数据恢复等) 1231

Hadoop实战:用MapReduce分析YouTube视频数据集(附完整代码)

本文提供了一个完整的Hadoop MapReduce实战教程,指导读者使用MapReduce框架分析YouTube视频数据集,统计不同视频类别的数量分布。教程涵盖从数据获取、预处理、HDFS操作到Java代码编写、作业提交及结果可视化的全流程,并附有完整代码,帮助开发者深入理解分布式计算思想。

lilh34434的博客 201

线程池常用API的使用你平时用到哪些?

1、线程池是什么?我们为什么使用线程池?* 减少资源消耗:避免频繁创建和销毁线程所带来的性能开销。* 提高响应速度:任务可以直接由空闲线程执行,无需等待新线程创建。* 控制并发数:限制同时运行的线程数量,防止资源耗尽。* 管理性:提供对线程生命周期的统一管理和监控。简而言之,线程池有助于优化多线程应用的性能、资源使用和可管理性。

安宁的博客 1157

react +ant desiagn pro实现按钮操作权限控制

在ant desiagn pro中提供了一个access用于对权限进行控制,需引入useAccess和Access

Sylvasylva的博客 2215

线程池笔记

线程池创建 Executors.**newFixedThreadPool(int)**一池N线程,控制最大的并发数,超出的线程会在队列中等待 Executors.**newSingleThreadExecutor()**一池一线程 Executors.**newCachedThreadPool()**一池可扩容根据需求创建线程,可灵活回收空闲线程 执行完线程,可不用再扩建继续使用 Executors.newScheduledThreadPool(),支持定时及周期性任务执行 核心参数 public Thre

qq_24480295的博客 294

WPF+Prism+LiveCharts+materialdesignin 搭建WPF开发框架

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容。

T_Tboy的博客 3054

µC/OS-II---任务就绪表

意思是:将变量OSRdyGrp中最低位为1的位数赋给y,那么,y就是最高优先级任务所在就绪表的行号,那么最高优先级的任务就在OSRdyGrp[y]行中,再根据。

weixin_45880844的博客 1651

线程池你真不来了解一下吗?

前言 只有光头才能变强 回顾前面: ThreadLocal就是这么简单 多线程三分钟就可以入个门了! 多线程基础必要知识点!看了学习多线程事半功倍 Java锁机制了解一下 AQS简简单单过一遍 Lock锁子类了解一下 本篇主要是讲解线程池,这是我在多线程的倒数第二篇了,后面还会有一篇死锁。主要将多线程的基础过一遍,以后有机会再继续深入! 那么接下来就开始吧,如果文章有错误的地方请大家多多包...

weixin_33842328的博客 107

【ArcGIS Pro微课1000例】0065:制作千层饼多图层叠加效果

右键dem图层,点击符号系统,在右侧的符号系统窗口中,选择拉伸,勾选【显示名称】和【显示全部】,选择高程色带7。由于数据具有高程源,因此可以将数据进行三维显示。右键地面→添加高程源图层。打开ArcGIS PRo,新建一个局部场景,命名为千层饼。设置了高程源数据之后,千层饼一下子就变成了三维形状。数据默认都是在一个平面上,以默认的符号系统显示。到此为止,每个图层均为平面的千层饼已经做好了。将TIN图层的高程偏移设置为-1000。最后将等高线的高程设为2000.移除工程默认加载的图层。默认即可,不需要做修改。

智慧空间实验室 1157

elasticsearch7.x集群API之nodes info

nodes info

荣耀之路 816

STM32入门教程:智能汽车控制

智能汽车是近年来快速发展的领域之一,它结合了嵌入式系统、传感器和通信技术,通过智能化的控制算法和决策系统实现自主导航、避障、环境感知等功能。在这篇教程中,我们将以 STM32 微控制器为核心,通过编写代码案例来介绍智能汽车的控制原理和实现方法。步骤三:决策与执行 最后,我们根据传感器数据做出相应的决策,并执行相应的动作。案例:智能汽车的避障功能 在这个案例中,我们将实现智能汽车的避障功能。感知系统负责感知汽车周围的环境,包括障碍物的距离、车辆的角度等信息。下面我们通过一个具体的案例来演示代码的编写。

2401_85258012的博客 929

微信小程序 - 最新详细实现用户保存下载视频到手机相册,将视频临时路径、在线播放地址(网络路径)URL存储到手机,弹出访问手机相册权限询问,支持视频格式mp4、avi、mov、wmv、flv、webm

微信小程序,视频,手机相册,保存,另存为,小程序保存到相册权限,writePhotosAlbum,一键保存视频到手机相册功能(视频来源为链接),第一次要获取用户授权,授权使用相册权限,小程序视频下载,如何把视频下载到相册,下载一个视频到本地相册,显示下载进度,可取消下载,视频下载到本地,微信小程序视频如何下载,保存视频到相机,页面播放视频并下载到本地,安卓系统,苹果ios保存到相册报错,权限拒绝后打不开,添加相册授权弹框拒绝后再也出不来了,实现保存视频到手机相册功能,将mp4在线视频下载并存储到用户的手机中

🏆 前端领域优质创作者 7631

【线程池】自行准备linux环境,带你手写线程池,只需仅仅150行代码

【线程池】自行准备linux环境,带你手写线程池,只需仅仅150行代码 视频讲解如下,点击观看: 【线程池】自行准备linux环境,带你手写线程池,只需仅仅150行代码|内存池|API|连接池|应用协议丨C/C++Linux服务器开发丨Linux后台开发 C/C++Linux服务器开发高级架构师知识点精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,音视频开发,Linux内核,Docker,TCP/IP,协程,DPDK多个高

Linuxhus的博客 169

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

java 线程监控_Java线程池运行状态监控实现解析

在实际开发过程中,在线程池使用过程中可能会遇到各方面的故障,如线程池阻塞,无法提交新任务等。如果你想监控某一个线程池的执行状态,线程池执行类 ThreadPoolExecutor 也给出了相关的 API, 能实时获取线程池的当前活动线程数、正在排队中的线程数、已经执行完成的线程数、总线程数等。总线程数 = 排队线程数 + 活动线程数 + 执行完成的线程数。线程池使用示例:private stati...

weixin_39639286的博客 207

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

当面试官问线程池时,你应该知道些什么?

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34348805的博客 130

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

快速了解Java线程池

之所以要使用线程池,是因为使用new Thread在大型项目中是有弊端的: 每次new Thread新建对象,性能差 线程缺乏统一管理,可能无限制的新建线程,相互竞争,有可能会造成过多占用系统资源而导致OOM 缺少更多功能,如定期执行等 而线程池的好处: 重用存在的线程,减少对象创建、消亡的开销,性能佳 可有效控制最大并发线程数,提高系统资源利用率,同...

全菜工程师小辉的博客 6024

Java线程池 API

/任务队列 private List < Runnable > tasks = Collections . synchronizedList(new LinkedList < >());//当前线程数量 private int num;//核心线程数量 private int corePoolSize;//最大线程数量 private int maxSize;//任务队列长度 private int workSize;

m0_55878559的博客 4万+

简单了解线程池

线程池是什么 创建一定数量的可执行线程放入一个容器(池)中,这个池就叫做线程池,我们也可以把线程池理解成是一组线程的集合。 为什么要用线程池 首先我们要知道,线程是很宝贵的资源,因为在Java中创建线程需要调用操作系统内核的Api,从而使操作系统为线程分配所需的资源,成本很高。那么我们就应该尽量的避免这样的宝贵资源重复创建和销毁,而使用线程池就能够做到。因为线程池中的线程在执行完任务后,会...

硅脂味咖啡的博客 1495

浅浅了解线程池

线程池其实就是一种多线程的处理方式,处理过程中可以将任务添加到队列里,然后在创建线程后自动启动这些任务,这里的线程就是之前介绍到的线程,这里所说的任务就是实现了Runnable和Callable接口的实例对象.既然了解了线程池,那么我们自己实现一个精简版的线程池写一个for循环,循环的边界由用户指定,每循环一次创建一个线程,在每个线程中使用while(true)来一直读取任务,只要有任务就取,取到任务之后就调用run(),注意:在创建好线程后还需要通过t.start()来启动该线程.

xiaoyubuhuiqiche的博客 239

深入了解Java线程池,以及如何实现一个简单的线程池

线程池是一种基于池化技术设计用于管理线程生命周期的框架或模式。它允许开发者创建一组工作线程,这些线程可以反复被用来执行不同的任务,而不是每次执行任务时都创建和销毁线程。

Ylxb_的博客 888

使用windows线程池API的线程池的问题与探索

window 线程池

yangyang_xiaowen的博客 617

线程池相关API以及线程池的使用

线程池就是一个容器,里面存放了很多线程,里面的线程可以复用的, 可以多次执行任务。 相关API: Executor(接口):Executor是所有线程池的顶层接口, 里面仅仅定义了执行线程任务的方法。 ExecutorService(接口):Executor的子接口,也表示线程池。 这个接口中不仅定义了执行线程任务 的方法,还定义了其他操作线程池的方法。 ...

qq_42225336的博客 682
上一篇: 多线程交互使用的数据结构,了解一下
下一篇: 垃圾回收,了解一下
go_sparrow
博客等级 码龄11年 25粉丝 257原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值