首页 > 其他分享 >线程池

线程池

时间:2023-08-23 16:12:03浏览次数:36  
标签:丢弃 队列 核心 任务 线程 创建

参考文档

https://www.toutiao.com/i6820216970252648971/?timestamp=1611647531&app=news_article_lite&use_new_style=1&req_id=2021012615521001013003701233060951&share_token=d49da611-6e37-46ae-90ea-9a51d6e3ad7b&group_id=6820216970252648971

https://www.cnblogs.com/nullzx/p/5184164.html

参数说明

  • corePoolSize => 线程池核心线程最大数量
  • maximumPoolSize => 线程池最大数量(线程池中能拥有最多线程数)
  • keepAliveTime => 空闲线程存活时间(没有超过核心线程数则不销毁)
  • unit => 时间单位
  • workQueue => 线程池所使用的缓冲队列(用于缓存任务、阻塞队列)
  • threadFactory => 线程池创建线程使用的工厂
  • handler => 线程池对拒绝任务的处理策略

常用的线程池

  • CachedThreadPool:创建非核心线程来完成任务(核心线程和队列均为0) 适用于IO密集型
  • SingleThreadPool: 创建1个核心线程(无限队列)
  • Fix:创建固定的核心线程数(无限队列) 适用于CPU密集型

LinkedBlockingQueue:可以指定容量大小,默认为Integer.MAX
SynchronousQueue: 容量为0

线程池工作流程

拒绝策略

  • AbortPolicy
    默认拒绝策略,丢弃任务,抛出异常RejectedExecutionException
  • DiscardPolicy
    丢弃任务,不抛出异常
  • DiscardOldestPolicy
    丢弃队列最早的未处理任务,然后重新尝试执行任务
  • CallerRunsPolicy
    由调用线程处理该任务

标签:丢弃,队列,核心,任务,线程,创建
From: https://www.cnblogs.com/hopeway-shaon/p/17651939.html

相关文章

  • 线程状态
    1)新建当用new关键字创建一个线程时,还没调用start就是新建状态。2)就绪调用了start方法之后,线程就进入了就绪阶段。此时,线程不会立即执行run方法,需要等待获取CPU资源。start()方法的作用是:启动一个分支线程,在JVM中开辟一个新的栈空间3)运行当线程获得CPU时间片后,就会进入......
  • java多线程使用详解与案例,超详细
    一、创建线程的方式1、继承Thread类让子类继承Thread线程类子类必须重写Thread类的run方法创建一个自己定义的线程对象调用start()方法启动线程//测试类/***1、让子类继承Thread线程类*/publicclassThreadTest1extendsThread{//2、子类必须重写Thread类......
  • Java 多线程处理 for 循环数据
    对于必须在for循环内进行查询的场景,可采用以下几种方式进行优化。1、主线程与子线程无先后顺序publicstaticvoidmain(String[]args)throwsInterruptedException{for(inti=0;i<5;i++){ThreadUtil.execAsync(()->{......
  • 多线程 问答
    1、怎么创建线程池用threadPoolExecutor去创建,核心线程数量,最大线程数量,保活时间,时间单位,工作队列publicThreadPoolExecutor(intcorePoolSize,intmaximumPoolSize,longkeepAliveTime,......
  • 雪花算法单线程实现-scala
    雪花算法单线程实现-scala参考blog/***[时间戳][数据标识id][机器id]*/objectSnowFlake{//开始时间(ms)2023-08-0100:00:00privatevalstartTimestamp=1690819200000L//机器id所占的位数privatevalworkerIdBits=5L//数据标识id所占的位......
  • python 多线程
    在python中,I/O密集型任务可以用多线程的方式来实现(threading库);然而,对于计算密集型任务,由于python中全局锁GIL的存在,多线程并不能起到一个加速的作用。所以此时,一般使用多进程的方式实现(multiprocessing库)。多线程threading:一个人有与异性聊天和看剧两件事要做。单线程的她可......
  • jmeter详解-线程组详解(9)-bzm - Free-Form Arrivals Thread Group
    bzm-Free-FormArrivalsThreadGroup介绍: 顾名思义,相当于自由形式的ArrivalsThreadGroup,它只是提供了自由形式的时间表的能力。相当于我们可以更灵活的控制 每分钟/每秒钟的请求数。页面说明:ThreadsSchedule(线程场景):Startvalue:开始时的用户数Endvalue:结束时......
  • Qt 多线程简单应用
    声明:QThread*thread;初始化:thread=newQThread();thread->start();将对象放到线程中去:moveToThread(thread);readTimer.moveToThread(thread);readTimer.setSingleShot(true);连接消亡信号:connect(thread,SIGNAL(finished()),this,SLOT(thread_done()));注......
  • jmeter详解-线程组详解(8)-bzm - Arrivals Thread Group
    bzm-ArrivalsThreadGroupArrival:到来,抵达介绍这个线程组使用“arrivals”调度作为一种表达负载的方式。“arrivals”表示线程迭代开始。如果所有现有线程在迭代过程中都很忙,它将创建新线程。注意,恒定的到达率意味着增加并发性,所以要小心你输入的值。使用“ConcurrencyLimi......
  • java中多线程使用方法
    线程互相独立可以同时运行一个线程不能多次启用并发和并行并发强调交替并行强调同时多线程实现方式继承Thread重写run方法下不能直接调用方法要调用start方法setname给线程命名getname获取线程名字实现Runnable接口先继承Runnable在创建Thread对象参......