首页 > 编程语言 >【Java-线程池】

【Java-线程池】

时间:2024-09-19 15:22:44浏览次数:3  
标签:Java 队列 存活 任务 线程 时间 执行

目录

什么是线程池:

线程池七大参数:

参数详细介绍:

1.核心线程数:

2.最大线程数:

3.线程存活时间:

4.时间单位:

5. 阻塞工作队列:

6.线程工厂:

7.拒绝策略:

线程池的执行流程:

线程池的常用方法:

线程池分类:

线程池的状态:

​编辑


什么是线程池:

        简单来说,线程池就是帮助我们创建并管理多个线程。

        线程池(Thread Pool)是一种基于池化技术的多线程处理形式,用于管理线程的创建和生命周期,以及提供一个用于并行执行任务的线程队列。线程池的主要目的是减少在创建和销毁线程时所花费的开销和资源,提高程序性能,同时也提供了对并发执行任务的更好管理,例如控制线程数量。

线程池七大参数:

以ThreadPoolExecutor举例,线程池七大参数:1.核心线程数 2.最大线程数 3.线程存活时间 4.时间单位 5. 阻塞工作队列 6.线程工厂 7.拒绝策略。

参数详细介绍:

1.核心线程数:

        线程池中能维护的最小线程数量,即使它们处于空闲状态也不会被回收,这样保证当新任务到来时能够快速进行响应。

2.最大线程数:

        线程池允许创建的最大线程数(包含核心线程)。

3.线程存活时间:

        非核心线程的存活时间(核心线程不会回收),当非核心线程的空闲时间大于存活时间就会被回收。

4.时间单位:

        线程存活时间的时间单位(eg.TimeUnit.SECONDS 秒)

5. 阻塞工作队列:

        用于存储待执行的任务。

6.线程工厂:

        用于创建线程,以及自定义线程名称,需要实现ThreadFactory接口。

7.拒绝策略:

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

线程池的执行流程:

线程池的常用方法:

void execute(Runnable command):提交线程任务

Future<T> submit(Callable<T> task):提交线程任务,可以获取线程执行结果

void shutdown():将线程池中的线程任务执行完毕后,关闭线程池

List<Runnable> shutdownNow():立刻关闭线程池,并返回未完成的线程任务

线程池分类:

        通过实现不同方法对象分类

FixedThreadPool:固定大小线程池,线程数量固定,不会自动扩容或缩容。

CachedThreadPool:缓存线程池,线程数量不固定,根据需要自动扩容或缩容。适用于执行大量短时间任务的场景。

SingleThreadPool:单线程线程池,只有一个线程在工作,保证任务按顺序执行。

ScheduledThreadPool:定时任务线程池,用于执行定时任务和周期性任务。

线程池的状态:

RUNNING

运行状态:接受新任务,持续处理任务队列里的任务

SHUTDOWN

不再接受新任务,要处理任务队列里的任务

STOP

不再接受新任务,也不再处理任务队列里的任务,中断正在执行的任务

TIDYING

表示线程池正在停止运行,终止所有任务,销毁所有工作线程,当线程池执行 terminated()方法时,线程池进入TIDYING状态

TERMINATED

表示线程池已停止运行,所有的工作线程已经被销毁,所有的任务已经被清空或者执行完毕,terminated() 方法执行完毕之后线程池进入此状态

标签:Java,队列,存活,任务,线程,时间,执行
From: https://blog.csdn.net/2301_78794952/article/details/142355025

相关文章

  • 进程和线程基础内容
    什么是进程和线程?进程是指运行中的程序,在windows里可以在任务管理器中查看;线程是CPU调度的基本单位,进程可以看成程序执行的一个实例。一个进程可以拥有多个线程,每个线程使用其所属进程的栈空间。进程就是线程的容器,需要线程利用进程中的一些资源,处理一个代码、指令。最终实现进......
  • java+vue计算机毕设电影院售票网站【源码+开题+论文+程序】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展和人们生活节奏的加快,线上购票已成为现代消费者享受娱乐服务的主要方式之一。电影院作为大众休闲娱乐的重要场所,其售票模式......
  • java+vue计算机毕设电子市场计算机配件报价系统【源码+开题+论文+程序】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,电子市场作为连接消费者与供应商的重要桥梁,其规模与复杂度日益增加。在计算机配件领域,产品种类繁多,价格波动频繁,传统的手工报......
  • java+vue计算机毕设订单管理系统【源码+开题+论文+程序】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着电子商务的蓬勃发展,订单管理成为了企业运营中不可或缺的一环。传统的订单处理方式往往依赖于人工操作,不仅效率低下,而且容易出错,难以满足现代商业......
  • JAVA学习路线分享:打造扎实的Java开发技能
            学习Java作为一门强大而广泛应用的编程语言,不仅可以为你打开职业发展的大门,还能让你在软件开发领域中游刃有余。在这篇文章中,我们将为您提供一个系统性的Java学习路线,帮助您逐步构建扎实的Java开发技能。第一阶段:基础知识        在学习Java的旅程中......
  • java+vue计算机毕设钓鱼爱好者交流平台【源码+开题+论文+程序】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在当今社会,随着生活节奏的加快和人们对休闲方式的多样化追求,钓鱼作为一项既能亲近自然又能修身养性的活动,受到了越来越多人的喜爱。然而,钓鱼爱好者们......
  • JAVASCRIPT上传大文件的三种解决方案
    前端:vue2,vue3,vue-cli,html5,webuploader后端:asp.net,jsp,springboot,php,数据库:MySQL,Oracle,SQLServer,达梦,人大金仓,国产数据库功能:超大文件上传,文件和文件夹批量上传,断点续传,加密上传,视频上传技术:百度webuploader,分块,切片,断点续传,秒传,MD5验证,纯JS实现,支持第三方......
  • 操作系统:线程间通信方式(上):锁机制详解
    操作系统:线程间通信方式(上):锁机制详解在多线程编程中,多个线程共享资源是常见的需求,但资源竞争会导致数据不一致和冲突问题。锁机制是一种用于控制线程对共享资源访问的同步方式,确保同一时刻只有一个线程能够访问临界区(CriticalSection)。本文将详细介绍线程间通信中的锁机......
  • [Java手撕]手撕死锁
    一种不安全的写法publicclassMain{publicstaticfinalObjectlock1=newObject();publicstaticfinalObjectlock2=newObject();publicstaticvoidmain(String[]args){Threadthread1=newThread(newRunnable(){@Ov......
  • 【JAVA开源】基于Vue和SpringBoot的购物商城网站
    本文项目编号T032,文末自助获取源码\color{red}{T032,文末自助获取源码}......