线程池,--其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,--无需反复创建线程而消耗过多资源。
创建销毁线程是一个非常消耗性能的。
  
我们详细的解释一下为什么要使用线程池?
在java中,如果每个请求到达就创建一个新线程,开销是相当大的。--在实际使用中,创建和销毁线程花费的时间和消耗的系统资源都相当大--,甚至可能要比在处理实际的用户请求的时间和资源要多的多。--除了创建和销毁线程的开销之外,活动的线程也需要消耗系统资源。--如果在一个jvm里创建太多的线程,可能会使系统由于过度消耗内存或“切换过度”而导致系统资源不足。为了防止资源不足,--需要采取一些办法来限制任何给定时刻处理的请求数目,尽可能减少创建和销毁线程的次数,特别是一些资源耗费比较大的线程的创建和销毁,尽量利用已有对象来进行服务。
数据库连接池--(原理和线程池是一样的)--:C3P0
--传统JDBC的操作,每次创建和销毁连接都是非常消耗系统资源的两个过程,影响程序的运行效率!
--连接管理:  为了解决性能问题,可以使用连接池优化的程序,来共享链接Connection
预先创建一组连接,--放入到连接池中,用的时候每次取出一个; 用完后,放回;

Java里面线程池的顶级接口是 Executor,不过真正的线程池接口是 ExecutorService, ExecutorService 的默认实现是 ThreadPoolExecutor;
普通类 Executors 里面调用的就是 ThreadPoolExecutor。Executors:线程池创建工厂类
Executors 类提供工厂方法用来创建不同类型的线程池。比如: newSingleThreadExecutor() 创建一个只有一个线程的线程池,newFixedThreadPool(int numOfThreads)来创建固定线程数的线程池,newCachedThreadPool()可以根据需要创建新的线程,但如果已有线程是空闲的会重用已有线程。

什么是线程池,线程池的作用相关推荐

  1. 【Android 异步操作】线程池 ( 线程池作用 | 线程池种类 | 线程池工作机制 | 线程池任务调度源码解析 )

    文章目录 一.线程池作用 二.线程池种类 三.线程池工作机制 四.线程池任务调度源码解析 一.线程池作用 线程池作用 : ① 避免创建线程 : 避免每次使用线程时 , 都需要 创建线程对象 ; ② 统 ...

  2. 为什么用线程池?解释下线程池参数?线程池处理流程?阻塞队列的作用?为什么是先添加列队而不是先创建最大线程?线程池中线程复用原理?

    为什么用线程池?解释下线程池参数? 1.降低资源消耗:提高线程利用率,降低创建和销毁线程的消耗. 2.提高响应速度:任务来了,直接有线程可用可执行,而不是先创建线程,再执行. 3.提高线程的可管理性: ...

  3. 什么是线程池以及它的作用是什么?

    概述 到目前为止我们使用多线程应用程序的目的是尽可能多地使用计算机处理器资源.所以,看起来我们仅需要为每个独立的任务分配一个不同的线程,并让处理器确定在任何时间它总会处理其中的某一个任务.额,对小系统 ...

  4. android线程及线程池

    众所周知,在UI系统中进行一些耗时操作,都会导致卡顿现象,因为一次刷新在16ms,如果当次操作过了这个时间,那么用户就能感觉到明显的卡顿,甚至引起ANR . 对于这种情况,一般都是再起一个线程,进行一 ...

  5. 【Android 异步操作】线程池 ( 线程池简介 | 线程池初始化方法 | 线程池种类 | AsyncTask 使用线程池示例 )

    文章目录 一.线程池简介 二.线程池初始化方法简介 三.线程池使用示例 一.线程池简介 线程池一般是实现了 ExecutorService 接口的类 , 一般使用 ThreadPoolExecutor ...

  6. java 重启线程_java 可重启线程及线程池类的设计(详解)

    了解JAVA多线程编程的人都知道,要产生一个线程有两种方法,一是类直接继承Thread类并实现其run()方法:二是类实现Runnable接口并实现其run()方法,然后新建一个以该类为构造方法参数的 ...

  7. python是如何实现进程池和线程池的_进程、线程、线程池和协程如何理解?

    1.进程.线程.线程池的概念 进程是一个动态的过程,是一个活动的实体.简单来说,一个应用程序的运行就可以被看做是一个进程,而线程,是运行中的实际的任务执行者.可以说,进程中包含了多个可以同时运行的线程 ...

  8. 递归锁、信号量、GIL锁、基于多线程的socket通信和进程池线程池

    递归锁.信号量.GIL锁.基于多线程的socket通信和进程池线程池 递归锁 死锁现象:是指两个或两个以上的进程和线程因抢夺计算机资源而产生的一种互相等待的现象 from threading impo ...

  9. 史上最强多线程面试44题和答案:线程锁+线程池+线程同步等

    最全BAT必考题答案系列 最全MySQL面试60题和答案 史上最全Spring面试71题与答案 史上最全Redis面试49题(含答案):哨兵+复制+事务+集群+持久化等 分布式缓存Redis+Memc ...

  10. 通过transmittable-thread-local源码理解线程池线程本地变量传递的原理

    前提 最近一两个月花了很大的功夫做UCloud服务和中间件迁移到阿里云的工作,没什么空闲时间撸文.想起很早之前写过ThreadLocal的源码分析相关文章,里面提到了ThreadLocal存在一个不能 ...

最新文章

  1. Science | 智能计算揭示前生命化学网络中合成的连接、出现和自我再生
  2. 十一.安装Redis
  3. 任务导向型对话系统——对话管理模型研究最新进展
  4. 怎么用js实现jq的removeClass方法
  5. AspNetCoreRateLimit - ASP.NET Core 速率限制中间件。
  6. 工作322:uni-扩展运算符实现拼接合并操作
  7. npm以及gulp相关操作
  8. java 高效加减乘除_java简单加减乘除
  9. 战斗服务器响应超时是否尝试重连,刺激战场:教你,从开伞到落地瞬间技巧
  10. UILabel的相关属性设置
  11. Cisco Packet Tracer安装教程
  12. Centos7二进制安装Mysql8.0.20
  13. 在ideaIU上使用JDBC连接MySQL及简单操作
  14. windows U盘分区方法
  15. android mediaplayer单曲循环播放,android mediaplayer永远在ICS上循环播放
  16. SOLIDWORKS 2014官方正版功能介绍
  17. Asp连接数据库时的问题Microsoft OLE DB Provider for ODBC Drivers error ‘80004005‘
  18. 与其被生活逼,不如被自己逼
  19. N-vop、S-vop、Packed Bistream
  20. java web 有什么区别吗_web和java一样吗?有什么区别?

热门文章

  1. FreeBSD 硬盘系统和数据的复制迁移实战--www.chq.name
  2. 北京医院排名 很有用,留下了
  3. c语言自学教材 轮子,七月新增开源项目:你学习的速度跟得上前端造轮子的速度吗?...
  4. JAVA树状结构转List平面
  5. STM32入门:STM32F1系列关于TIM2-TIM7的时钟频率问题
  6. 在red hat中安装yum
  7. LeetCode-Student_Attendance_Record_I
  8. 深圳德卡D3-U读写卡器windows(Java),linux(C)驱动开发
  9. 依照表结构创建student表设置sno为主键_7.MySQL库表的创建与修改
  10. mysql错误代码: 1060 Duplicate column name ‘sno‘