为什么⽤线程池?线程池的创建?

为什么⽤线程池?

  • 随着系统越来越大丶业务越来越复杂,就需要多线程来配合工作,提升系统的性能
  • 创建一个线程的方法网上说有好几种
    • 实现runnable丶callable丶继承Thread类
    • 实际上看起来就只有一种
    • 就是new 一个Thread线程对象,那两个接口仅仅只是用来重写run方法实现业务逻辑的
  • 所以线程最基础的步骤就是创建一个线程对象,就是线程生命周期的第一步,创建状态
  • 就跟数组有工具类丶集合有工具类一样,线程为了简化步骤,肯定有自己的工具类
  • 就是线程池,线程池的好处网上一大堆
    • 降低资源消耗;降低创建和销毁线程的消耗
    • 提⾼响应速度;任务来了,直接有线程可⽤可执⾏,⽽不是先创建线程,再执⾏
    • 提⾼线程的可管理性;线程是稀缺资源,使⽤线程池可以统⼀分配调优监控
  • 我们甚至都不用考虑这么多,只需要知道这是一个线程的工具类就行了
  • 它可以简化创建线程的步骤,对执行线程有更好的优化作用
  • 所以我们在一般情况下都应该使用线程池,只在某些非常特殊时期才选择使用最原始方式去创建线程

线程池的创建

  • 我们可以通过java.util.concurrent.ThreadPoolExecutor(线程池执行器)来创建一个线程池。
  • 参数我就记不得了,谁没事回去记参数啊是不是,死记硬背一点用也没有
    • 大概知道参数肯定有初始的线程数量丶最大可扩展的线程数量丶线程超时时间丶线程等待队列这些参数
    • 具体的用的时候在看,这是一个很典型的生产者-消费者模式
    • 线程池就是生产者,我们任务需要线程就是消费者
    • 需要的线程太多了,线程池作为生产者就可以扩大线程数量
  • 当然还有线程池的执行器工具类,用来更加方便的创建一个线程池 -> Executors
    • 执行器工具类算就是一个简单工厂模式
    • 调用不同的静态方法,传递不同参数来创建不同的线程池

Java基础 -> 为什么⽤线程池?线程池的创建?相关推荐

  1. java基础:简单实现线程池

    先上原理图:为了更好的在手机上显示,我重新把图画了一遍 上代码之前,要先补充一下线程池构造的核心几个点 线程池里的核心线程数与最大线程数 线程池里真正工作的线程worker 线程池里用来存取任务的队列 ...

  2. JAVA基础知识|进程与线程

    一.什么是进程?什么是线程? 操作系统可以同时支持多个程序的运行,而一个程序可以狭义的认为就是一个进程.在一个进程的内部,可能包含多个顺序执行流,而每个执行流就对应一个线程. 1.1.进程 进程:是计 ...

  3. Java基础----【异常、线程】

    主要内容 异常.线程 第一章 异常 1.1 异常概念 异常,就是不正常的意思.在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是: 异常 :指 ...

  4. java基础(八) 深入解析常量池与装拆箱机制

    ###引言 本文将介绍常量池 与 装箱拆箱机制,之所以将两者合在一起介绍,是因为网上不少文章在谈到常量池时,将包装类的缓存机制,java常量池,不加区别地混在一起讨论,更有甚者完全将这两者视为一个整体 ...

  5. Java基础(29)线程与进程、并发与并行、多线程的三种启动方式、买票案例

    1. 进程与线程 1. 进程与线程的概述: (1)进程: 进程就是正在运行的程序,是系统进行资源分配和调用的独立单位,每一个进程都有他自己的内存空间和系统资源 比如正在运行的应用程序(QQ,微信,QQ ...

  6. Java基础学习——多线程(线程间通信-生产者消费者代码示例)

    JDK 1.5提供了多线程升级方案 将同步synchronized替换成了显示的Lock操作.可以实现唤醒.冻结指定的线程. Lock接口 Lock 实现提供了比使用 synchronized 方法和 ...

  7. 【java基础知识】编写数据库连接池

    之前一直用JDBC,现在接触到了DataSource.网上查到数据库连接池工具最好用的是Druid.下面分别介绍一下. 1.DataSource   数据源 什么是数据源: JDBC2.0提供了jav ...

  8. java基础火车站售票(线程安全)

    案例:火车站售票(线程安全) package com.itguo.anli;public class anli {public static void main(String[] args) {MyT ...

  9. java基础(六)线程

    2019独角兽企业重金招聘Python工程师标准>>> https://www.cnblogs.com/zhongshengzhen/p/threadBase.html https: ...

  10. 【java基础】idea配置jdk环境,创建项目输出“你好世界“实例

    本篇文章主要讲解安装idea.配置jdk等工序的方法. 作者:任聪聪 idea可以使用jetbrains 的 intellij 社区版本,免费好用,专业版有条件的可以付费购买. intellij 的介 ...

最新文章

  1. 为什么程序员不能接私活?
  2. oracle导入dmp报无效的sql,oracle施用pl/sql导入数据库备份文件dmp导入失败原因
  3. 在ASP.NET MVC里对Web Page网页进行权限控制
  4. unity3d小小白之导入素材、添加天空盒
  5. website for .Net Core
  6. 【Android游戏开发十四】深入Animation,在SurfaceView中照样使用Android—Tween Animation!...
  7. 编写sonar插件 The following languages have no built-in quality profiles:xxx
  8. cpc卡内计费信息异常包括_今日头条信息流广告投放效果好吗?信息流广告计费方式怎么收费?...
  9. Java RandomAccessFile skipBytes()方法与示例
  10. 《MYSQL必知必会》—18.如何使用MySQL的Match()和Against()函数进行全文本搜索以及查询扩展的使用
  11. MyEclipse中VSS的使用详解
  12. 图像增广——图片旋转任意角度(python实现)
  13. 全球及中国无线硬盘行业发展前景与投资战略规划分析报告2022-2028年
  14. 非负矩阵分解NMF简介
  15. FAT文件系统简明教程
  16. 编程实现更改文件夹图标
  17. 移动互联网感言(董烨/Joven.Dong)
  18. java计算机毕业设计高校大学生就业系统MyBatis+系统+LW文档+源码+调试部署
  19. Java自学基础 常用类
  20. Qt之线程的开始暂停恢复停止

热门文章

  1. 地方论坛门户网站运营之我见-上篇
  2. 蓝牙耳机连接笔记本音量大的问题
  3. Struts2 DTD与XML文件编写
  4. 如何使用ECharts绘制甘特图
  5. Linux关于qt缺少xcb问题解决办法
  6. linux驱动篇-touchscreen-精简版
  7. qq空间自动评论说说php源码使用教程,仿QQ空间说说 评论/回复 效果源码
  8. 【0520】密钥管理技术
  9. 什么是 Sidecar
  10. 计算机招聘试题选择题,计算机考试题库:计算机基础练习题(39)