首页 > 编程语言 >java 线程池 学习记录

java 线程池 学习记录

时间:2022-08-30 01:44:59浏览次数:56  
标签:execute java 记录 MDC submit ThreadLocal 线程 参数

线程池构造函数参数有哪些


  • 核心线程池
  • 最大线程数

  • 空闲非核心线程存活时长
  • 空闲非核心线程存活时长单位

  • 阻塞队列

  • 线程生产工厂

  • 拒绝执行处理类

execute和submit有什么区别?

  • execute会抛出异常
  • submit不会抛出异常

线程池怎么处理异常

  • 方式一:继承线程池,重写execute/submit,并使用try catch处理异常
  • 方式二:重写线程生产工厂,给每个生产的线程类设置UncaughtExceptionHandler

如果想要在执行过程中把ThreadLocal参数进行传递,该怎么操作?

  • 继承线程池类
  • 重写submit方法
    • 在submit的时候将ThreadLocal/MDC参数,提取并放到Runnable的私有属性中
    • 在Runnable中的run方法执行的时候,将私有属性中的ThreadLocal参数或者MDC参数放到当前线程的ThreadLocal或者MDC中
    • run方法执行结束后,需要把当前线程中ThreadLocal参数或者MDC参数清空

线程池的执行过程

  • 当有任务提交的时候,检查核心线程是否满了
    • 没满,启动新的线程进行执行
    • 满了,则将任务放到阻塞队列中去
  • 当阻塞队列满了,检查线程数是否已经到达最大线程数
    • 没到达最大线程数,启动新的线程处理任务
    • 满了,调用拒绝执行处理类进行处理

线程池

  • 类:ThreadPoolExecutor

标签:execute,java,记录,MDC,submit,ThreadLocal,线程,参数
From: https://www.cnblogs.com/cgengwei/p/16637952.html

相关文章

  • Java开发工具IDEA
    Java开发工具IDEA下载网址连接安装下载略使用IDEA创建第一个程序File--->New--->Project--->Java(选择JDK的版本)--->NextProjectname:项目的名称Projectlocat......
  • java并发 学习记录
    哪些方法会抛出InterruptedException异常?Thread类怎么处理异常可以在Thread中设置异常处理类(实例方法)--setUncaughtExceptionHandlerThread.interupt()方法可以......
  • 个人对 JavaScript 闭包的理解
    作用域的概念同级作用域在一个作用域中声明相同名称的变量会发生变量名冲突的问题。假如在作用域A中声明一个变量a,作用域B也声明一个变量a,两个作用域的变量都互不......
  • Java开发环境的下载安装和卸载
    Java开发环境的下载安装和卸载Java开发环境之卸载JDK删除Java的安装目录删除JAVA_HOME删除path下关于Java的目录CMD输入java-version查看版本号(如果显示不是系统命......
  • jenkins使用shell脚本执行nohup java -jar包失败
    一、问题通过jenkins执行shell脚本时,脚本中是通过nohupjava-jar&的方式启动,显示执行成功,但是服务却没启动,脚本如下:#!/bin/bashnohupjava-Xms800m-Xmx800m-XX:P......
  • 用java实现二分查找
    /***调用erfen方法,输入数据int[]s={0,1,2,3,4,5}和8,输出方法的返回值*/publicclassErfen{ publicintsearch(int[]nums,inttarget){ intl=0; intr=nums.l......
  • Java的三大版本以及JDK、JRE、JVM
    Java的三大版本以及JDK、JRE、JVMJava的三大版本JavaSE:标准版(桌面程序、控制台开发...)JavaME:嵌入式开发(手机、小家电)JavaEE:企业级开发(web端、企业级开发)JDK、JRE、J......
  • Java入门-基础语法(数据类型)
    数据类型:强类型语言要求变量的使用严格符合规定,所有的变量都必须先定义后才能使用,是最基本的存储单元,其要素包括变量名、变量类型和作用域,安全性高,速度相对较慢。typevar......
  • Java学习-第一部分-第二阶段-第六节:泛型
    泛型笔记目录:(https://www.cnblogs.com/wenjie2000/p/16378441.html)泛型的理解和好处看一个需求请编写程序,在ArrayList中,添加3个Dog对象Dog对象含有name和age,并......
  • Dynamic CRM插件中记录日志-Nlog记录到文本
    DynamicCRM插件中记录日志的方式有多种通常情况下分为ITracingService记录、单独日志表插入记录、文本记录三种。之前整理过ITracingService记录的方式,但这种记录有限制......