美文网首页
什么是线程池,如何使用,为什么要用

什么是线程池,如何使用,为什么要用

作者: 码出高效 | 来源:发表于2018-04-17 11:36 被阅读431次

1、什么是线程池:  java.util.concurrent.Executors提供了一个 java.util.concurrent.Executor接口的实现用于创建线程池

多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。

假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。

   如果:T1 + T3 远大于 T2,则可以采用线程池,以提高服务器性能。

一个线程池包括以下四个基本组成部分:

 1、线程池管理器(ThreadPool):用于创建并管理线程池,包括 创建线程池,销毁线程池,添加新任务;2、工作线程(PoolWorker):线程池中线程,在没有任务时处于等待状态,可以循环的执行任务 3、任务接口(Task):每个任务必须实现的接口,以供工作线程调度任务的执行,它主要规定了任务的入口,任务执行完后的收尾工作,任务的执行状态等4、任务队列(taskQueue):用于存放没有处理的任务。提供一种缓冲机制。

线程池不仅调整T1,T3产生的时间段,而且它还显著减少了创建线程的数目,看一个例子:

    假设一个服务器一天要处理50000个请求,并且每个请求需要一个单独的线程完成。在线程池中,线程数一般是固定的,所以产生线程总数不会超过线程池中线程的数目,而如果服务器不利用线程池来处理这些请求则线程总数为50000。一般线程池大小是远小于50000。所以利用线程池的服务器程序不会为了创建50000而在处理请求时浪费时间,从而提高效率。

2.常见线程池

①newSingleThreadExecutor

单个线程的线程池,即线程池中每次只有一个线程工作,单线程串行执行任务

②newFixedThreadExecutor(n)

固定数量的线程池,没提交一个任务就是一个线程,直到达到线程池的最大数量,然后后面进入等待队列直到前面的任务完成才继续执行

③newCacheThreadExecutor(推荐使用)

可缓存线程池,当线程池大小超过了处理任务所需的线程,那么就会回收部分空闲(一般是60秒无执行)的线程,当有任务来时,又智能的添加新线程来执行。

④newScheduleThreadExecutor

大小无限制的线程池,支持定时和周期性的执行线程

相关文章

  • java----线程池

    什么是线程池 为什么要使用线程池 线程池的处理逻辑 如何使用线程池 如何合理配置线程池的大小 结语 什么是线程池 ...

  • 01 java线程池-初始线程池-ThreadPoolExecu

    java线程池 为什么要用线程池? 降低系统资源消耗。 提高线程可控性。 如何创建使用线程池? JDK8提供了五种...

  • 线程池

    JDK线程池 为什么要用线程池 线程池为什么这么设计 线程池原理 核心线程是否能被回收 如何回收空闲线程 Tomc...

  • Java线程池的原理及几类线程池的介绍

    在什么情况下使用线程池? 使用线程池的好处: 线程池工作原理:为什么要用线程池? 诸如 Web 服务器、数据库服务...

  • 什么是线程池,如何使用,为什么要用

    1、什么是线程池: java.util.concurrent.Executors提供了一个 java.util.c...

  • Java中的线程池

    Java提供的线程池出自并发大师Doug Lea之手,向大师致敬! 1. 为什么要用线程池 合理使用线程池可以带来...

  • java线程池源码解析

    主要介绍线程池相关知识,关于线程池,首先我们思考下为什么要用线程池。如果单纯的使用线程,线程的创建和销毁都是自己来...

  • 线程池

    主要用于概念扫盲和梳理。本文主要为什么使用线程池,ThreadPoolExecutor构造函数,常见的线程池种类。...

  • 线程池原理

    首先在使用线程池的时候有今个问题:Q1:什么是多线程?Q2:为什么要用到线程池?Q3:线程池那么多参数都有什么用?...

  • 线程池相关知识

    线程池 1. 什么是线程池 线程的池化,一个线程的容器、集合,包含多个线程 2. 为什么要用线程池 线程对于操作系...

网友评论

      本文标题:什么是线程池,如何使用,为什么要用

      本文链接:https://www.haomeiwen.com/subject/wsyukftx.html