并发编程:自定义并发类:3、使用指定的线程工厂创建线程池

并发编程系列之线程池工厂类:Executors 前言 上节讲了讲自定义线程池,今天我们来聊聊线程池框架,在实际开发中我们还是基本使用线程框架Executor给我们提供的一些工具类,Java提供的Executor都在JUC(java.util.concurrent)包下面,主要包括:线程池工厂类Executors,线程池实现类ThreadPoolExecutor等,今天呢我们主要聊聊Executors,看看通过Executors我们可以做什么?OK,不多说废话,我们马上进入今天的主题,让我们扬帆起航,开启今天的并发之旅吧。 什么是Executor. 阅读详情

目录

Executor框架

一、主程序

二、其他类

三、其他说明


Executor框架

Executor框架使用线程创建和执行进行分离的机制。即Executor使用ThreadFactory接口来创建线程。

此处既是使用指定的线程工厂来创建线程池(这样线程池中使用的就是指定的线程类型)

一、主程序

package xyz.jangle.thread.test.n8_5.executorusefactory;

import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;

import xyz.jangle.thread.test.n8_4.threadfactory.MyTask;
import xyz.jangle.thread.test.n8_4.threadfactory.MyThreadFactory;

/**
 * 8.5、在Executor对象中使用ThreadFactory
 * 
 * @author jangle
 * @email jangle@jangle.xyz
 * @time 2020年9月23日 下午4:47:55
 * 
 */
public class M {

	public static void main(String[] args) throws Exception {
		// 1、创建线程工厂
		var factory = new MyThreadFactory("jangle");
		// 2、创建线程池(使用1创建的线程工厂)
		var executor = Executors.newCachedThreadPool(factory);
		var task = new MyTask();
		// 3、提交任务
		Future<?> thread = executor.submit(task);
		executor.shutdown();
		executor.awaitTermination(1, TimeUnit.DAYS);
		System.out.println("M: 线程信息:"+thread);
		System.out.println("M:End...");
	}

}

二、其他类

参考:实现线程工厂来创建自定义线程(ThreadFactory)

三、其他说明

ThreadPoolExecutor类的构造方法中,也存在ThreadFactory接口的参数。

并发编程系列之如何正确使用线程池? 并发编程系列之如何正确使用线程池?在上一章节的学习中,我们掌握了线程的基本知识,接着本博客会继续学习多线程中的线程池知识。线程是不是越多越好?在学习多线程之前,读者可能会有疑问?如果单线程跑得太慢,那么是否就能多创建多个线程来跑任务? 阅读详情

相关推荐

Unity UI Toolkit避坑指南:从官方Samples到实际项目,这些‘坑’我帮你踩过了

本文分享了Unity UI Toolkit在实际项目中的避坑经验和优化技巧,包括动画系统的高效替代方案、3D世界UI的创新实现方式、USS样式继承的反直觉规则等。通过详细的代码示例和性能优化策略,帮助开发者避免常见陷阱,提升开发效率。

weixin_29535577的博客 342

java redis 实现多线程资源复用

1、测试类 package com.redis.resource; import org.assertj.core.util.Lists; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.ListOperations; import org.springframework.d

春风化雨 1107

Windows Server 2008 R2装不上VMware Tools?别急,手动安装驱动补丁的保姆级教程来了

本文提供了Windows Server 2008 R2手动安装VMware Tools驱动补丁的详细教程,解决驱动签名验证失败问题。通过获取特定补丁文件、创建安装介质、挂载虚拟机并安装补丁等步骤,帮助用户顺利完成VMware Tools安装,提升虚拟机功能与性能。

weixin_28335283的博客 467

java redis 商品秒杀_java使用redis模拟高并发秒杀活动

首先配置jedis包redis.clientsjedis3.0.1直接上main方法代码,里面注释已经包含了说明 :package com.xh.test;import java.util.HashMap;import java.util.Map;import java.util.concurrent.CountDownLatch;import java.util.concurrent.Execu...

weixin_32389225的博客 414

【Flink】FlinkSQL如何触发执行计算

Table (通过 StatementSet.addInsert() 输出给某个 Sink)和 INSERT 语句 (通过调用 StatementSet.addInsertSql())会先被缓存到 StatementSet 中,StatementSet.execute() 方法被调用时,所有的 sink 会被优化成一张有向无环图。该方法是用来将一个表的内容插入到目标表中,一旦该方法被调用, TABLE API 程序立即被翻译。该方法是用来执行一个 SQL 语句,一旦该方法被调用, SQL 语句立即被翻译。

一杯咖啡半杯糖的博客 1004

Ubuntu搭建Pytorch环境(Anaconda、Cuda、cuDNN、Pytorch、Python、Pycharm、Jupyter)

Ubuntu搭建Pytorch环境(Anconda、Cuda、Pytorch、Python、Pycharm、Jupyter)

funfan的博客 1万+

67.java项目--redis(2)-redis四种模式

redis的模式 redis总共有四种模式:单体,分片,哨兵,以及集群,我们采用java代码连接redis. java连接redis的jar包,用很多种,主要有Redisson,Jedis,lettuce. redisson默认实现redis分布式锁; lettuce是springboot-redis-starter默认支持的redis客户端. 这里我们一jedis客户端来做步骤演示,步骤: 1.单体模式 搭建redis服务器 步骤: (1)创建一个文件夹single,并且复制redis.conf文件到

weixin_45449911的博客 715

模糊控制 (Fuzzy Control) 算法详解及案例分析

模糊控制是一种基于模糊逻辑的控制策略,其核心思想是通过模糊规则和模糊推理实现对复杂系统的控制。模糊控制不依赖于精确的数学模型,而是通过模拟人类的决策过程来处理不确定性和非线性问题。

闲人编程的博客 3657

java redis 连接池_redis 连接池并发读取数据,连接池无法回收连接

我自己编写了一个redis的客户端,在测并发的时候发现获取到的redis连接无法归还到连接池这是单元测试类public class RedisTest {private static final ExecutorService executorService = Executors.newFixedThreadPool(1000);private static CyclicBarrier c = ...

weixin_29483853的博客 613

把 ST03 的历史数据留得更久:ABAP Workload 统计保留期设置、原理与落地避坑指南

SAP ST03性能数据保留期配置指南 ST03/ST03N是SAP系统性能分析的核心工具,但默认数据保留期通常较短(3个月左右),难以满足跨季度对比、年度规划等需求。本文详细解析了ST03数据保留期的配置方法及注意事项: 数据存储机制:性能数据存储在监控库中,通过定期重组作业清理过期数据 配置路径:7.0+系统在"Workload Collector Database→Reorganization→Control"中按Profile分别设置 关键限制:保留期最大值建议不超过99,否则可

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 217

从入门到精通|Yalmip+Cplex在电力系统中的应用(Matlab代码实现)

​ 火电成本包括运行成本、碳捕集成本,其中火电运行成本由运行维护成 本和发电煤耗成本构成,发电煤耗与其出力关系: ,F 为机组煤耗量(kg/h),P 为机组出力/MW;运行维护成本按照 0.5 倍煤耗成本考虑,碳捕集成本取决于碳排放量及碳捕集单价,火电机组相关参数如附表 1 所示,电煤价格为 700 元/t ​

weixin_46039719的博客 1550

java定时器及利用redis加锁应对分布式

1、利用spring编写定时任务@Component @Configurable @EnableScheduling //关键注解 public class TimerScheduler { @Scheduled(cron = "0 0 0-23 * * ?") //时间表达式,每天整点执行 public void emailPushByCron(){ System.o...

xi_nuo的博客 2100

深度学习实战:基于YOLOv5/v8/v10的快递暴力分拣检测系统(完整版)

在电商物流高速发展的今天,快递包裹日均处理量已突破亿件级别。然而,快递分拣过程中的暴力抛扔行为不仅造成包裹损坏,更带来巨大的经济损失。据统计,每年因暴力分拣导致的快递破损投诉占总投诉量的30%以上。传统的人工监控方式存在疲劳、疏漏等问题,因此开发一套智能化的快递暴力分拣检测系统具有重要的现实意义。

YOLO 274

【Java并发编程】了解并合理使用Executors工具类来创建线程池

描述Java中线程池的概念,举例一个“下载文件”的使用线程池的场景。最后代码模拟实现一个简单的线程池。

yican2580的博客 1991

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

JAVA多线程并发编程:线程池原理与实战应用

摘要:本文详细讲解了JAVA线程池的核心原理与实战应用。主要内容包括:线程池的必要性(避免频繁创建销毁线程的性能损耗)、核心工作流程(任务提交、线程分配、队列存储等5个步骤)、ThreadPoolExecutor的7个关键参数配置,以及4种常见线程池(Fixed/Cached/Single/Scheduled)的适用场景。文章还分析了4种拒绝策略,并通过电商订单异步处理的实战案例,展示了如何自定义线程工厂和拒绝策略。最后指出生产环境中应避免使用Executors工具类,推荐通过ThreadPoolExecu

今天比昨天更努力一点! 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Java并发编程面试必备:如何创建线程池、线程池拒绝策略

本文介绍了Java中的线程池及其在高并发编程中的应用,重点解析了ThreadPoolExecutor的核心参数配置、线程池类型选择及适用场景。文章探讨了常见的线程池拒绝策略,包括AbortPolicy和CallerRunsPolicy,并分析了它们在应对系统过载时的效果。此外,文章提供了20个常见面试问题及其详尽解答,涵盖了线程池的工作机制、任务队列、线程复用、异常处理与监控等关键知识点,为面试者提供了全面的复习指导,以帮助其在并发编程面试中表现出色。

程序员-杨胡广的博客 2259

Java并发编程新纪元:探索Executor线程池框架

在Java并发编程领域,线程的创建与管理至关重要。传统通过new Thread()的方式在性能优化、资源高效利用及系统扩展性方面存在明显局限。鉴于此,本文将介绍Executor线程池框架,这一相较于传统线程创建方式更为优越的并发编程工具。Executor线程池框架通过复用线程、智能管理资源及灵活配置,显著提升了系统性能、优化了资源利用率,并增强了系统的可扩展性。

Rye的博客 2647

java并发编程之创建线程的几种方式

自定义线程池是根据需求来定制线程池的一种方式。通常,我们可以通过 ThreadPoolExecutor 来实现线程池的自定义,而不使用 Executors 工厂方法。ThreadPoolExecutor 提供了丰富的参数配置,使得我们可以灵活地创建符合需求的线程池。:核心线程池大小,即线程池中始终保持的最小线程数。:线程池能够创建的最大线程数。如果任务量大于核心线程数,线程池会创建更多的线程,直到达到这个最大值。

m0_75209344的博客 1444

程序员的金三银四:创建线程池有哪几种方式?

通过本文的介绍,读者可以了解到创建线程池的几种常见方式,并对它们进行了比较和分析。在实际项目中,根据具体需求选择合适的方式创建线程池,可以更好地提高程序的并发性能和开发效率。

double222222的博客 1480

并发编程高频八股——线程池

大家好,我是钢板兽! 今天继续更新并发编程的第二篇高频八股——线程池,包括线程池的作用、创建线程池的方式、线程池的参数以及核心参数的设置。 本文的八股在对线程池的理解上比较浅显,创建线程池的方式和核心参数的设置,建议大家可以去实现一个动态线程池的demo或者复现开源项目,这样会加深对线程池的理解。

weixin_49426115的博客 1020

【2025】java并发编程之创建线程的几种方式

自定义线程池是根据需求来定制线程池的一种方式。通常,我们可以通过 ThreadPoolExecutor 来实现线程池的自定义,而不使用 Executors 工厂方法。ThreadPoolExecutor 提供了丰富的参数配置,使得我们可以灵活地创建符合需求的线程池。corePoolSize:核心线程池大小,即线程池中始终保持的最小线程数。maximumPoolSize:线程池能够创建的最大线程数。如果任务量大于核心线程数,线程池会创建更多的线程,直到达到这个最大值。

gwndjsh的博客 1083

Java 开发中的并发编程:理解线程与线程池

通过合理地使用线程池来管理线程,使用并发工具类来控制线程间的协调与同步,可以提升系统的响应能力和可伸缩性。并发编程是 Java 开发中的一个重要技能,它涉及线程的创建、管理、同步工具类的使用等多个方面。线程池可以有效地减少创建和销毁线程的开销,并且能够控制并发线程的数量,避免系统过载。本文将介绍 Java 并发编程的基础知识,包括线程的创建、管理、线程池的使用、以及常见的并发工具类,帮助开发者提升多线程编程技能,优化应用性能。在上面的代码中,我们创建了一个固定大小为 3 的线程池,并提交了 5 个任务。

一名热衷于技术的全栈开发者,专注于前端与后端的全面技术探索。在这里,我将分享我在技术领域的学习与成长,助力更多开发者的进步。 898

Java并发编程——线程池

线程池原理剖析、使用线程池的好处、Executor框架详解

m0_62909831的博客 1119

Java并发编程面试题: 线程池

收集大量Java经典面试题目,内容涵盖了包括了:Java面试、Spring、JVM、MyBatis、Redis、MySQL、并发编程、微服务、Linux、Springboot、SpringCloud、MQ、Kafka 等知识点。适合准备Java面试的读者参考和复习。

m0_46013789的博客 1601

Java并发如何优雅的创建线程池

为何要线程池化?java使用过程中如何优雅的创建线程池

关注微信公众号「Coding我不配」 1463

【Java 并发编程】线程池理解与使用

一般都是创建任务、创建线程、启动线程,任务结束后系统就会销毁线程,但是这种方式一个线程只能执行一个任务并不能复用。如果还有任务的话,还需要再创建一个线程去执行它。在数据量庞大的情况,就需要频繁创建与销毁线程,我们知道构造一个线程的开销是非常大的,这样的话就可能会导致系统崩溃。那么一个线程能不能复用呢?答案是可以的,线程池就提供了线程回收机制,可以重复利用已创建的线程降低线程创建和销毁造成的消耗。通过打印结果可以知道通过线程池,可以做到一个线程执行多个任务。所以线程池就是一个可以复用线程的技术。

2301_79201049的博客 1224
上一篇: 并发编程:自定义并发类:2、使用线程工厂来生成自定义线程(ThreadFactory)
下一篇: 并发编程:自定义并发类:5、自定义周期调度任务
博风
博客等级 码龄16年 442粉丝 357原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值