首页 > 其他分享 >线程池-基础篇

线程池-基础篇

时间:2023-11-22 23:33:39浏览次数:33  
标签:丢弃 基础 池中 任务 线程 超时 ThreadPoolExecutor

常用线程池

Executors提供四种线程池:

1.newCachedThreadPool :缓存线程池,如果线程池长度超过处理需要,可回收空闲线程,若无可回收,则新建线程。

2.newFixedThreadPool : 定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。

3.newScheduledThreadPool : 计划线程池,支持定时及周期性任务执行。
4.newSingleThreadExecutor :单线程线程池,用唯一的线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行

核心参数

ThreadPoolExecutor有几个重要的成员变量:keepAliveTime(如果一个线程处在空闲状态的时间超过了该属性值,就会因为超时而退出)、allowCoreThreadTimeOut(是否允许核心线程超时退出)、poolSize(线程池中当前线程的数量)、corePoolSize(线程池的基本大小)、maximumPoolSize(线程池中允许的最大线程数)。

注意还有一个largestPoolSize,记录了曾经出现的最大线程个数。因为setMaximumPoolSize()可以改变最大线程数。

拒绝策略

1.ThreadPoolExecutor.AbortPolicy:丢弃任务并抛出RejectedExecutionException异常。
2.ThreadPoolExecutor.DiscardPolicy:丢弃任务,但是不抛出异常。
3.ThreadPoolExecutor.DiscardOldestPolicy:丢弃队列最前面的任务,然后重新提交被拒绝的任务
4.ThreadPoolExecutor.CallerRunsPolicy:由调用线程(提交任务的线程)处理该任务

标签:丢弃,基础,池中,任务,线程,超时,ThreadPoolExecutor
From: https://www.cnblogs.com/nxjblog/p/17850591.html

相关文章

  • Java语言基础知识全总结
    一.Java的优点1.      跨平台性。一次编译,到处运行。Java编译器会将Java代码编译成能在JVM上直接运行的字节码文件,C++会将源代码编译成可执行的二进制代码文件,所以C++执行速度快2.      纯面向对象。Java所有的代码都必须在类中书写。C++兼具面向对象和面向过程的特......
  • 【Java基础】集合之——ArrayList类
    集合集合,是一种容器,类似数组,集合大小可变ArrayList可变原理当创建ArrayList集合容器时,底层会存在一个长度为10个大小的空数组如果元素溢出,则扩容原数组1.5倍大小的新数组将原数组数据,拷贝到新数组中将新元素添加到新数组原数组变成垃圾数据由Java的垃圾处理器不定时回收......
  • 入门 Dart 编程:为 Flutter 开发应用打下基础 审核中
    前言:Dart是一门现代化的、多用途的编程语言,最为广泛应用于移动应用开发中的Flutter框架。本篇博客旨在为初学者提供Dart编程的基础概念,为进一步探索Flutter开发打下坚实基础。DartPad演示......
  • 15-基础SQL-函数
    什么是函数:是指一段可以直接被另一段程序调用的程序或代码MySQL的函数主要包括:字符串函数、数值函数、日期函数、流程函数。字符串函数MySQL中内置了很多字符串函数,常用的几个如下:CONCAT演示:SELECTCONCAT("Hello","MySQL"); LOWER......
  • html基础测试题
    1.html指的是什么?超文本标记语言(HyperTextMarkupLanguage)2.Web标准的制定者是?万维网联盟(W3C)3.在下列的HTML中,哪个是最大的标题?<h1>4 . 在下列的HTML中,哪个可以插入折行?<br>5 . 在下列的HTML中,哪个可以添加背景颜色?<bodybgcolor="yellow">6 . 请选择产......
  • 深入Android多线程编程与性能优化
    引言在上一篇的入门篇中,我们对Android线程的基础概念和多线程编程模型有了初步了解。本篇将深入探讨多线程编程技术和性能优化策略,以提升应用的效率和响应性。高级多线程编程技术使用线程池管理线程线程池是一组预先创建的线程,用于执行任务。通过使用线程池,可以避免不断创建和销毁......
  • MySQL 基础介绍
    MySQL介绍相关概念DB(DataBase)数据库。是一个存储数据的容器DBA(DatabaseAdministrator):数据库管理员。负责数据库的管理和维护的专业人员DBMS(DatabaseManagementSystem):数据库管理系统。是一种软件,用于创建和管理数据库。App(Application):应用程序。执行特定任务或一系列任务的......
  • sqlalchemy快速使用,sqlalchemy原生操作,sqlalchemy操作表,一对多关系,多对多关系,scoped线
    1sqlalchemy快速使用......
  • piscina nodejs woker 线程池实现
    nodejs线程池工具还是很多的,piscina是一个比较活跃的项目包含的特性快速包含了固定以及可变任务场景支持灵活的线程池大小异步追踪支持取消支持支持comonj,esm,以及ts自定义任务队列linux系统上可选的cpu调度支持参考使用app.jsconstpath=require('......
  • 关于阻塞多线程
    关于阻塞多线程同步方式理解:一个循环循环100次。多线程方式理解:开10个循环同时执行循环,每个循环循环10次。......