JUC并发编程-第二天:线程池相关

线程池相关

  • 线程池
    • 内置线程池的使用
    • 线程池的关闭
    • excute方法和submit方法的区别

线程池

线程池就是一个可以复用线程的技术

  public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory,RejectedExecutionHandler handler){return null;}

*[ ] 各个参数的含义

  • corePoolSize:线程池的核心线程数(正式员工)
  • maximumPoolSize:指定的最大线程数量(核心线程数和临时线程数之和)
    最大员工总数:正式员工+外包员工
  • keepAliveTime:临时线程存活时间(外包合同期限)
  • unit:临时线程存活时间单位
  • workQueue:任务队列(项目)
  • threadFactory:线程工厂(招人的hr)
  • handler:线程池拒绝策略

内置线程池的使用

内置线程池使用Executors工具类去创建线程池
在这里插入图片描述

public class ThreadPool {public static void main(String[] args) {//创建固定大小的线程池ExecutorService executorService = Executors.newFixedThreadPool(5);//创建单线程线程池ExecutorService threadExecutor = Executors.newSingleThreadExecutor();//创建动态线程线程池ExecutorService service = Executors.newCachedThreadPool();}
}

线程池的关闭

使用shutdown()或者shutdownNow()

  • shutdown():线程执行完后关闭;
  • shutdownNow():立即关闭,不管线程是否执行完毕;
    关闭线程池,如果不关闭,线程池中的线程会一直占用系统资源,会导致内存泄漏,主线程一直不会退出

excute方法和submit方法的区别

excute方法用了执行runable任务对象。而submit方法用来执行未来任务对象

  • 以计算1-100的任务为例
  • excuter方法
public class RunableExcuteTask implements Runnable{int goal;public RunableExcuteTask(int goal) {this.goal = goal;}@Overridepublic void run() {int sum=0;for (int i = 1; i <=goal ; i++) {sum=sum+i;}System.out.println("1-"+goal+"的和是:"+sum);}
}

测试

public class ThreadPool {public static void main(String[] args) {Runnable task=new RunableExcuteTask(100);ExecutorService threadPool = Executors.newFixedThreadPool(5);threadPool.execute(task);threadPool.shutdown();}
}
  • submit方法
public class CallableExcuteTask implements Callable<Integer> {int goal;public CallableExcuteTask(int goal) {this.goal = goal;}@Overridepublic Integer call() throws Exception {int sum=0;for (int i = 1; i <= goal; i++) {sum=sum+i;}return sum;}
}

测试

在这里插入代码片

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

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

相关文章

前端菜鸡流水账日记 -- Pagination分页

哈喽哇大家&#xff0c;老规矩&#xff0c;见面先问好&#xff0c;今天是端午节假期后的第一天上班&#xff0c;大家假期开心吗&#xff0c;哈哈哈哈&#xff0c;我还是蛮开心的... 今天这篇笔记要分享得主要是一个分页器&#xff0c;但是不一样得地方是因为&#xff0c;首先是…

平台型组织的战略及OKR

本文主要探讨了在平台型组织中战略和OKR&#xff08;目标与关键结果&#xff09;的应用&#xff0c;以及如何在不同的组织架构中有效制定和执行战略。原文: Strategy and OKRs in the Platform Organization 战略&#xff1a;重要的承诺、复杂的过程 对于什么是组织的战略&…

EE trade:黄金期货交易指令有哪些

在黄金期货交易中&#xff0c;投资者常用的交易指令主要包括以下几种&#xff0c;每种指令都有其特殊用途和优势&#xff1a; 市价单(Market Order) 直接按市场当前价格买入或卖出合约。 适用于追求立即成交&#xff0c;不关注价格变动的情况。 限价单(Limit Order) 设定一…

百递云·API开放平台「智能地址解析API」助力地址录入标准化

地址信息的正确录入&#xff0c;是保证后续物流配送环节能够顺畅运行的必备前提&#xff0c;错误、不规范的收寄地址将会产生许多困扰甚至造成损失。 ✦地址信息通常包含国家、省、城市、街道、楼宇、门牌号等多个部分&#xff0c;较为复杂&#xff0c;填写时稍有疏忽就会出现…

使用Python爬取temu商品与评论信息

【&#x1f3e0;作者主页】&#xff1a;吴秋霖 【&#x1f4bc;作者介绍】&#xff1a;擅长爬虫与JS加密逆向分析&#xff01;Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python与爬虫领域研究与开发工作&#xff01; 【&…

如何下载Tuxera NTFS for Mac 2023软件及详细安装步骤

软件简介&#xff1a; 在 Mac 上打开、编辑、复制、移动或删除存储在 Windows NTFS 格式 USB 驱动器上的文件。当您获得一台新 Mac 时&#xff0c;它只能读取 Windows NTFS 格式的 USB 驱动器。要将文件添加、保存或写入您的 Mac&#xff0c;您需要一个附加的 NTFS 驱动程序。…

驱动开发(三):内核层控制硬件层

驱动开发系列文章&#xff1a; 驱动开发&#xff08;一&#xff09;&#xff1a;驱动代码的基本框架 驱动开发&#xff08;二&#xff09;&#xff1a;创建字符设备驱动 驱动开发&#xff08;三&#xff09;&#xff1a;内核层控制硬件层​​​​​​​ ←本文 目录…

Linux C编译器从零开发一

基础程序汇编 test.c int main() {return 42; } 查看反汇编 cc -o test test.c objdump -d -M intel test 0000000000001129 <main>:1129: f3 0f 1e fa endbr64 112d: 55 push rbp112e: 48 89 e5 mov rbp,rsp1131: b…

C#实现WMI获取硬盘参数

文章目录 背景涉及框架及库WMI查询小工具参数解释U盘移动硬盘本机设备 总结 背景 因为需求需要涉及获取硬盘的SN参数&#xff0c;但是又不想要获取到U盘或移动硬盘设备的SN&#xff0c;所以就浅浅的研究了一下。 以下就是我目前发现的一些参数的作用&#xff0c;够我用了。。。…

C++11移动语义

前言 之前我们已经知道了在类里开辟数组后&#xff0c;每一次传值返回和拷贝是&#xff0c;都会生成一个临时变量 class Arr { public://构造Arr() {/*具体实现*/ };//拷贝Arr(const Arr& ar) {/*具体实现*/ };//重载Arr operator(const Arr& ar) { /*具体实现*/Arr …

Canvas绘制老友记时钟

Canvas绘制老友记时钟 前言 一直做3D/2D可视化&#xff0c;Canvas API和三角函数&#xff0c;空间几何是基础。在官网上看了一遍Canvas API之后&#xff0c;决定绘制一个老友记时钟来巩固知识点&#xff0c;本文用实际代码讲解绘制过程。 代码 HTML <canvas id"myC…

计算机网络(9) TCP超时重传以及滑动窗口流量控制

一.确认机制与流量控制 引用&#xff1a;滑动窗口&#xff0c;TCP的流量控制机制 | 小菜学网络 确认机制 由于 IP 协议缺乏反馈机制&#xff0c;为保证可靠性&#xff0c;TCP 协议规定&#xff1a;当接收方收到一个数据后&#xff0c;必须回复 ACK 给发送方。这样发送方就能得…

企业网站建设方案

企业网站建设方案是企业推广和宣传的重要工具&#xff0c;可以帮助企业树立良好的形象&#xff0c;吸引更多的客户和合作伙伴。一个好的企业网站应该具备用户友好的界面设计、快速的加载速度、完善的信息分类和搜索功能、优质的内容和多样化的互动体验。下面将从以下几个方面介…

网络爬虫概述

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 网络爬虫&#xff08;又被称为网络蜘蛛、网络机器人&#xff0c;在某社区中经常被称为网页追逐者&#xff09;&#xff0c;可以按照指定的规则&#…

Sigir2024 ranking相关论文速读

简单浏览一下Sigir2024中与ranking相关的论文。不得不说&#xff0c;自从LLM大热后&#xff0c;传统的LTR方向的论文是越来越少了&#xff0c;目前不少都是RAG或类似场景下的工作了&#xff0c;比如查询改写、rerank等。 文章目录 The Surprising Effectiveness of Rankers Tr…

10分钟部署一个个人博客

关于vuepress这里没必要过多介绍&#xff0c;感兴趣的可以直接去官网了解&#xff0c;下面是官网首页地址截图 &#xff1a;https://v2.vuepress.vuejs.org/zh/ 透过这张图&#xff0c;我们也可以大致的对这个框架的特点有一定的认识&#xff0c;这就够了。其他的东西我们在使用…

Go TOKEN机制与跨域处理方式

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

亲测几十款随身wifi,全网最全随身WiFi避坑指南!最值得买的随随身wifi品牌推荐!

关于随身wifi我认为我是比较有发言权的&#xff0c;历经三年测评了几十种随身wifi&#xff0c;便宜的贵的&#xff0c;大牌的小厂的&#xff0c;电池款USB款等各种随身wifi。根据测试结果以及通过电商平台搜索、粉丝反馈、社交平台评价等综合测评结果。今天就跟大家分享一下&am…

设计模式-装饰器模式Decorator(结构型)

装饰器模式(Decorator) 装饰器模式是一种结构模式&#xff0c;通过装饰器模式可以在不改变原有类结构的情况下向一个新对象添加新功能&#xff0c;是现有类的包装。 图解 角色 抽象组件&#xff1a;定义组件的抽象方法具体组件&#xff1a;实现组件的抽象方法抽象装饰器&…

Vue45-分析脚手架结构

一、脚手架项目结构一览 二、src、public文件夹外的文件 2-1、babel.config.js文件 详细的配置规格&#xff1a;babel官网。 2-2、package.json包的说明书 build命令&#xff1a;代码写完了&#xff0c;最后使用build命名构建整个工程&#xff0c;将其变成浏览器能够运行的项…