当前位置: 首页 > news >正文

欧美租车公司网站模板1psd深圳企业黄页网

欧美租车公司网站模板1psd,深圳企业黄页网,万和城官方网站,怎么制作灯笼一、线程池的执行流程总结 提交线程任务;如果线程池中存在空闲线程,则分配一个空闲线程给任务,执行线程任务;线程池中不存在空闲线程,则线程池会判断当前线程数是否超过核心线程数(corePoolSize&#xff09…

一、线程池的执行流程总结

  • 提交线程任务;
  • 如果线程池中存在空闲线程,则分配一个空闲线程给任务,执行线程任务;
  • 线程池中不存在空闲线程,则线程池会判断当前线程数是否超过核心线程数(corePoolSize)
    • 若未超出核心线程数,则创建一个核心线程用来执行线程任务;
    • 若超出核心线程数,则线程池会检查工作队列(workQueue)是否已满
      • 如果工作队列未满,则将该线程任务存入工作队列中,当线程池中出现空闲线程,从工作队列中依次取出线程任务并执行;
      • 如果工作队列已满,则判断是否超出最大线程数(maximumPoolSize)
        • 若当前线程池中的线程数超出最大线程数,则执行拒绝策略(defaultHandler)
        • 若当前线程池中的线程数未超出最大线程数,则创建非核心线程数来执行线程任务。

二、线程池的配置参数总结

1.核心线程数:corePoolSize

int corePoolSize

核心线程数也就是线程池的最小线程数量。

  • 核心线程会一直存活,不会被回收,除非设置了核心线程超时时间;
  • 在创建线程池后,默认情况下,线程池中没有任何线程,调用excute()方法添加一个任务。

当线程池中没有空闲线程时,查看是否超过核心线程数:

  • 线程数量小于核心线程数,则马上创建新的核心线程来执行线程任务。
  • 线程数量大于核心线程数,则查看工作队列是否超出。
2.最大线程数:maximumPoolSize

int maximumPoolSize

是指线程池中允许的最大线程数量。

当工作队列已满,且存活线程数超过了核心线程数时,线程池判断“存活线程数”是否超过最大线程数:

  • 未超过最大线程数:创建新线程来执行该任务。
  • 超过最大线程数:执行拒绝策略。
3.非核心的空闲线程的存活时间:keepAliveTime

long keepAliveTime

当线程数大于核心线程数时,空闲的线程等待新任务到达的最大时间,如果超过这个时间线程还没有需要执行的任务,该空闲线程就会销毁。

4.keepAliveTime的单位:unit

TimeUnit unit

keepAliveTime的单位,枚举类型的TimeUnit类。

5.阻塞工作队列:workQueue

BlockingQueue<Runnable> workQueue

在任务执行之前,用来存储任务的工作队列,此队列只保存由excute()方法提交的Runnable类型的任务。

当存活的线程数大于核心线程数,查看工作队列:

  • 工作队列未满:将新的请求任务加入工作队列;
  • 工作队列已满:线程池判断是否超过最大线程数。
5.1 ArrayBlockingQueue

基于数组有界阻塞队列,FIFO(先进先出)。

  • capacity:队列初始化大小
  • fair:表示该队列中的可重入锁是否公平,默认为false

当线程池中已经存在最大数量的线程时候,再请求新的任务,这时就会将任务加入工作队列的队尾,一旦有空闲线程,就会取出队头执行任务。

5.2 LinkedBlockingQueue

基于链表的误解阻塞队列,默认最大容量为Integer.MAX_VALUE,可认为是无限队列,FIFO(先进先出)。

指定工作队列大小,则最大线程数量的限制是有效的。

5.3 SynchronousQueue

可以将SynchronousQueue看作是一个没有容量的阻塞队列,它严格遵循FIFO(先进先出)的原则,但特殊的是,它不会保存任何元素,而是直接在不同的线程间进行传递。

6.线程工厂:threadFactory

ThreadFactory threadFactory

用于创建一个新线程时使用的工厂,可以用来设置线程名。

没有特别声明时,使用Executors工具类提供的默认线程工Executors.defaultThreadFactory()

自定义线程工厂时,要实现ThreadFactory接口,重写newThread()方法。

7.拒绝策略:handler

RejectedExecutionHandler handler

当线程池内的线程被耗尽,并且工作队列已满,对于新提交的任务,将使用拒绝策略进行处理。

7.1 AbortPolicy:丢弃线程任务,并抛出异常

没有特别声明时,使用默认的拒绝策略defaultHandler

7.2 DiscardOldestPolicy:将工作队列的对头移除,线程池重新执行该线程任务

7.3 DiscardPolicy:直接丢弃该任务

7.4 CallerRunPolicy:线程池没有关闭时,线程自己调用run方法

7.5 自定义的拒绝策略:实现RejectedExecutionHandler接口

重写void rejectedExecution(Runnable r, ThreadPoolExecutor executor)方法

http://www.dt0577.cn/news/38629.html

相关文章:

  • 中山网站建设模板网络公司aso平台
  • 有哪些企业可以做招聘的网站有哪些内容谷歌优化排名哪家强
  • 建立网站tkapp开发公司排名
  • 企业网站建设前期规划下载百度 安装
  • 北京建站模板公司google官网入口下载
  • github个人网站模板程序员培训班要多少钱
  • 太仓住房与城乡建设部网站网站优化推广的方法
  • 用动易建设网站教程网站搭建需要什么技术
  • 免费网站个人注册百度知道网页版进入
  • 网站后期增加内容西安网站建设公司排名
  • 响应式网页设计是什么seo教程seo教程
  • 推荐 网站空间产品推广方案怎么做
  • 专业网站策划公司信阳搜索引擎优化
  • 公司网站建设作用游戏优化
  • 网站源码分享平台微信管理系统登录入口
  • 网络安全专业就业前景seo服务如何收费
  • 开发区网站制作公司学前端去哪个培训机构
  • 输入文字生成图片appseo技术员
  • 网站建设项目需求分析报告博客
  • 南阳网站搭建哪个平台可以免费发广告
  • 无锡自助建网站百度查询入口
  • 网络搭建就业前景怎么做网站优化排名
  • 网站推广做百度还是360色盲测试卡
  • 美容院网站制作如何制作自己的网站?
  • 松原做网站公司网络推广的重要性与好处
  • 网站建设纪念币发售免费外国网站浏览器
  • 凡科网站怎么做建站镇江seo优化
  • 制作微信公众号的网站怎么做好网络销售
  • 网站怎么加载图片做logo百度公司推广
  • 广州网站建设多少钱搜索引擎bing