JDK自带的构建线程池的方式之newSingleThreadExecutor

news2024/10/6 1:25:17

newSingleThreadExecutor从名称上就可以知道这个是一个单例的线程池。在这个线程池中只有一个线程来处理任务。
就可以使用在业务涉及到顺序消费的时候。

newSingleThreadExecutor的代码展示

  • 可以从这个在Executors中的静态方法newSingleThreadExecutor可以发现,该线程池的实现的最内部也是通过ThreadPoolExecutor来进行创建,并把线程数设置为1。
  • 在使用的时候就会出现第一个任务过来进线程池中执行,后续任务则会在LinkedBlockingQueue无界队列中等待上一个任务线程执行完任务之后才能执行。由于只有一个线程在线程池中和队列中任务投递过来的顺序就是线程处理的顺序,从而实现了顺序执行的任务逻辑。

在这里插入图片描述

newSingleThreadExecutor中FinalizableDelegatedExecutorService方法分析

  • 首先这个是在创建好了ThreadPoolExecutor之后外面在包装一层,有点类似于设计模式中的装饰者模式,对类的功能进行了增强。
  • 查看内部的代码发现并没有什么特别之处。super是调用父类的方法,和正常执行创建ThreadPoolExecutor没有什么区别。
  • 重写了finalize方法。该方法是GC在回收对象时要执行的方法。方法体中的含义显而易见就是在对象回收之前让当前线程shutdown,停止掉当前线程。但是由于finalize在执行的时候是守护线程,会随着主线程的执行结束就结束了,所以可能并不能每一次都理想的执行掉shutdown方法来关闭线程。因此就会造成JVM中存在一定概率的线程堆积问题。
  • 所以我们在日常的使用时一定要在业务逻辑执行完成之后手动shutdown

在这里插入图片描述

newSingleThreadExecutor代码效果演示

  • 不难发现每一次获取的线程名称都是一样的。

在这里插入图片描述

  • 发现在执行完成线程池任务之后要是没有手动shutdown,会出现JVM堆积大量线程的问题。

在这里插入图片描述

  • 执行完shutdown就可以解决线程堆积的问题

在这里插入图片描述

有一点需要注意的是,要是创建的线程是作为全局变量进行使用,在局部变量中执行完成业务逻辑关闭掉线程池之后会影响后续的逻辑执行。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/668983.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python数值区间判断

Python数值区间判断 Python是一种高级编程语言,具有强大的数值计算和处理功能。在Python中,经常需要进行数值区间判断,以确定一个特定的数值是否位于指定的范围内。本文将介绍Python中常用的数值区间判断方法,并对其进行详细的讲…

SpringBoot操作Word实现文字替换和盖章(提供Gitee源码)

前言:在日常的工作当中,避免不了会涉及到一些Word文件方面的操作,这篇博客将使用SpringBoot整合开源Apache来操作Word,分享的都是目前实际当中会经常用到的一些功能代码都实际测试过,只分享干货,大家一键复…

AI加持、共建共享...亚马逊云科技重新定义云安全

我们正在进入数字化时代,无数传统企业正在飞速走上云端,无数基础设施服务在云的加持下焕发全新的活力。AI、物联网、大数据等新兴技术逐步落地应用,IaaS、PaaS、云原生技术日渐成熟,“云”正在快速扩容。2021年,我国云…

#10035. 「一本通 2.1 练习 1」Power Strings

Power Strings 题意简述: 求一个字符串由多少个重复的子串连接而成。 例如 ababab 由三个 ab 连接而成,abcd 由 abcd 由一个 abcd 连接而成。 输入格式 本题多组数据。 每一组数据仅有一行,这一行仅有一个字符串 s s s。 输入的结束标…

蓝牙GATT协议介绍

前言 现在低功耗蓝牙(BLE)连接都是建立在 GATT (Generic Attribute Profile) 协议之上。GATT 是一个在蓝牙连接之上的发送和接收很短的数据段的通用规范,这些很短的数据段被称为属性(Attribute)。 GAP 详细介绍 GAT…

鉴源论坛丨汽车电子ISO 26262:2018标准概述(一)

作者 | 郭建 上海控安可信软件创新研究院特聘专家 版块 | 鉴源论坛 观模 摘要:安全在汽车研发中是关键要素之一,辅助驾驶、车辆的动态控制等功能的研发和集成都需要加强安全系统研发,同时,需要为满足所有预期的安全目标提供证据…

牛客网最新890道大厂 Java 八股文面试题整理

程序员真的是需要将终生学习贯彻到底的职业,一旦停止学习,离被淘汰,也就不远了。 面试跳槽季,这是一个千年不变的话题,每到这个时候,很多人都会临阵磨枪,相信不快也光。于是,大家都…

2023 最新版navicat 下载与安装 步骤及演示 (图示版)

2023 最新版navicat 下载与安装 步骤演示 -图示版 1. 下载Navicat2 .安装navicat 博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客👦🏻 《java 面试题大全》 🍩惟余辈才疏学浅,临摹之作或有不妥之处,还请…

三子棋小游戏【C语言】

目录 前言 一、基本实现逻辑 二、实现步骤 1.实现进入游戏后的选择菜单——》这个实现起来较为容易,我们约定为:1是玩游戏, 0 是退出游戏! 2.要玩完了一局后接着玩,很容易想到要用循环。 3.采用多文件编程---》我…

0011-TIPS-pawnyable : Heap-Overflow

原文 Linux Kernel PWN | 040202 Pawnyable之堆溢出 Holstein v2: Heap Overflowの悪用 题目下载 漏洞代码 #include <linux/module.h> #include <linux/kernel.h> #include <linux/cdev.h> #include <linux/fs.h> #include <linux/uaccess.h>…

【Nginx介绍和安装与升级】

文章目录 Nginx网站服务一、nginx服务基础1. Nginx简介2. Tengine3. Nginx 相对于 Apache 的优点4. 阻塞与非阻塞 同步与异步5. nginx 应用场景 二、编译安装nginx 服务1. 在线安装nginx2. nginx编译安装1. 关闭防火墙&#xff0c;将安装nginx所需软件包传到/opt目录下2. 安装依…

二维码标签制作教程

如今二维码已被广泛应用在了许多场景中&#xff0c;譬如设备巡检、固定资产盘点、隐患上报、人员管理等&#xff0c;在二维码投入使用前需要为设备、物品、人员等制作一物一码标签。为了让标签快速落地&#xff0c;可使用草料二维码的标签制作功能&#xff0c;只需选择心仪的标…

Cortext-M3系统:中断的具体行为(6)

1、中断/异常的响应序列 当CM3开始响应一个中断时&#xff0c;会在它小小的体内奔涌起三股暗流&#xff1a; ​ 入栈&#xff1a;把8个寄存器的值压入栈 ​ 取向量&#xff1a;从向量表中找出对应的服务程序入口地址 ​ 选择堆栈指针MSP/PSP&#xff0c;更新堆栈指针SP&#xf…

数据恢复技巧:如何恢复已删除的手机短信

短信包含大量重要信息&#xff0c;例如个人联系人、密码和重要业务数据。丢失有价值的数据可能会令人失望&#xff0c;但很高兴知道可以使用多种方法恢复短信。 在本文中&#xff0c;我们将探讨您可以采取哪些步骤来恢复 Android 或 iOS 设备上丢失或删除的短信。 第 1 部分…

chatgpt赋能python:Python指定区域截图:优化截图流程的最佳方式

Python指定区域截图&#xff1a;优化截图流程的最佳方式 在网络时代&#xff0c;图片作为一种重要的信息传播方式&#xff0c;扮演着举足轻重的角色。截图作为最常见的图片处理方式之一&#xff0c;也时常被我们用于记录屏幕内容、报告问题及展示操作流程。 若想提高截图的效…

操作系统-I/O管理-磁盘和固态硬盘

目录 一、磁盘结构 二、磁盘调度算法 ​编辑 2.1先来先服务(FCFS) 2.2最短寻找时间优先(SSTF) 2.3扫描算法(SCAN) 2.4LOOK调度算法 2.5循环扫描算法(C-SCAN) 2.6 C-LOOK调度算法 三、减少延迟时间方法 交替编号 ​磁盘地址结构的设计 错位命名 四、磁盘的管理 4.1磁盘…

JDK自带的构建线程池的方式之newFixedThreadPool

在Java中基于Executors提供了很多种线程池供开发者使用&#xff0c;在Java的并发包下&#xff0c;由并发编程大佬到隔离创建。 newFixedThreadPool 这个线程池的特点是线程数是固定的&#xff0c;下面这个是在Executors类中提供的一种静态方法。在使用的时候需要向方法提供一个…

Excel VBA 语法基础

VBA&#xff08;Visual Basic for Applications&#xff09;是一种用于宏编程和自动化任务的编程语言&#xff0c;广泛应用于 Microsoft Office 套件中的各种应用程序&#xff0c;如 Excel、Word 和 PowerPoint。掌握 VBA 基础语法可以帮助您通过编写自定义的宏来增强和自动化这…

python:使用Scikit-image对遥感影像进行角点检测特征提取(corner)

作者:CSDN @ _养乐多_ 本文将介绍使用Scikit-image对遥感影像进行角点检测特征(corner)提取的一些方法及其代码。方法包括 Harris角点检测(corner_harris),Shi-Tomasi角点检测(corner_shi_tomasi),Foerstner角点检测(corner_foerstner),FAST角点检测(corner_fast…

VUE 2X 计算监视属性 ⑥

目录 文章有误请指正&#xff0c;如果觉得对你有用&#xff0c;请点三连一波&#xff0c;蟹蟹支持✨ V u e j s Vuejs Vuejs计算属性 C o m p u t e d Computed Computed监视属性 W a t c h Watch Watch总结 文章有误请指正&#xff0c;如果觉得对你有用&#xff0c;…