zoukankan      html  css  js  c++  java
  • Java线程池

    java线程池

    1.newFixedThreadPool(int nThreads) 指定工作线程数量的线程池

    2.newCacheThreadPool() 处理大量短时间工作任务的线程池   

    (1)试图缓存线程并且重用,当没有缓存线程可用的时候,就会创建新的工作线程

    (2)如果线程闲置的时候超过阀值,则会被终止并移出缓存

    (3)系统长时间闲置的时候,不会消耗资源

    3.newSingleThreadExecutor() 创建唯一的工作线程执行任务,如果线程异常结束,会有另一个线程取代他

    4.newSingleThreadScheduledExecutor()与newScheduledThreadPool(int corePoolSize) 定时或者周期性的工作调度,两者的区别在于是单一的工作线程还是多个线程

    使用线程池的好处: 1降低消耗     2. 提高线程的客观理性

    5.ThreadPoolExecutor的构造函数  

    corePoolSize 核心数量    

    maxmunPoolSize 线程不够的时候能够创建的最大线程数

    workWQueue:任务等待队列

    keepAliveTime:抢占的顺序不一定,看运气

    threadFactory:创建新的线程 

    6.新任务新提交executor执行后的判断:
    如果运行的线程少于corePoolSize,则创建新的线程来处理任务,即使线程池中的线程是空闲的  

    如果线程池中的线程数量大于或者等于corePoolSize,但是小于maximumPoolSize,则只有当workQueue满的时候,回去创建新的线程去处理任务 

    如果设置的corePoolSize和maximumPoolSize相同,则创建的线程池的大小是固定的,这个时候,如果有新的任务提交,若workQueue未满,则会先提交到workQueue中,等待空闲的线程去workQueue获取任务并且处理

    如果运行的线程数量大于等于maximumPoolSize,如果workQueue已经满了,则会通过handler所指定的策略处理任务

  • 相关阅读:
    EF+MVC+Bootstrap 项目实践 Day7
    JS---数组
    OS---华硕笔记本从U盘启动安装系统
    PHP--分页类
    PHP--数据库操作类
    OS---net start mysql 发生系统错误5
    MYSQL---远程连接mysql数据库提示:ERROR 1130的解决办法
    CSS-小谈LV,HA!
    MYSQL---设置存储引擎
    MYSQL---存储引擎
  • 原文地址:https://www.cnblogs.com/yyfyl/p/12956960.html
Copyright © 2011-2022 走看看