JAVA多线程实现-支持定时与周期性任务的线程池(newScheduledThreadPool)

java周期性线程池newScheduledThreadPool介绍,多线程下载url文件(断点下载、进度展示、网速展示、剩余时间展示) 阅读详情

前几篇文章中分别介绍了

单线程化线程池(newSingleThreadExecutor)

可控最大并发数线程池(newFixedThreadPool)

可回收缓存线程池(newCachedThreadPool)


newScheduledThreadPool用于构造安排线程池,能够根据需要安排在给定延迟后运行命令或者定期地执行。

在JAVA文档的介绍

public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize);
创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行。
参数:corePoolSize - 池中所保存的线程数,即使线程是空闲的也包括在内。
返回:新创建的安排线程池

需要注意的是,参数corePoolSize在这个方法中是没用意义的,详解见JAVA进阶----ThreadPoolExecutor机制。

具体实现:

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

public class ThreadPoolByNewScheduledThreadPool {

	public static void main(String[] args) {
		
		Thread thread = new Thread(new Runnable() {
			@Override
			public void run() {
				System.out.println(Thread.currentThread().getName() + " : 延迟3秒");
			}
		});
		
		/**
		 * 定长线程池,支持定时及周期性任务执行
		 */
		ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5);
		
		//延迟3s后运行
		scheduledThreadPool.schedule(thread, 3, TimeUnit.SECONDS);
		
		//首次执行延迟1s,每次间隔3秒
		//scheduledThreadPool.scheduleAtFixedRate(thread, 1, 3, TimeUnit.SECONDS);
		
		//每次执行结束,已固定时延开启下次执行
		//scheduledThreadPool.scheduleWithFixedDelay(thread, 1, 3, TimeUnit.SECONDS);
		
		System.out.println(Thread.currentThread().getName() + " : main thread");
		scheduledThreadPool.shutdown();
//		try {
//			Thread.sleep(12000);
//		} catch (InterruptedException e) {
//			e.printStackTrace();
//		}
//		scheduledThreadPool.shutdownNow();
	}

}

后面注释掉的内容表示强制程序最大执行实际为12s,这通常是不切实际的,常常会需要在线程中设置标志位或标记系统时间来获取程序的终止时间。这就涉及到获取线程返回值的问题。将在后续文章中进行介绍。




深入剖析Java线程池之“newScheduledThreadPool“ newScheduledThreadPool是Java线程池框架中的一个重要方法,它允许创建定时或周期性执行任务的线程池。通过深入剖析其源码和实现原理,可以更好地理解其工作机制和性能特点。同时,结合高级应用策略,可以更好地利用newScheduledThreadPool来提高系统的性能和稳定性。 阅读详情

相关推荐

20220601超简单百度地图街景图片爬取+绿视率计算

真的不难咯。

weixin_39676904的博客 1万+

周期性线程池newScheduledThreadPool详解

线程池支持定时以及周期性执行任务,创建一个corePoolSize为传入参数,最大线程数为整形的最大数的线程池 public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize) { return new ScheduledThreadPoolExecutor(corePoolSi...

javaboy 4万+

ESP32实战:破解校园网WPA2-Enterprise认证的完整指南

本文详细介绍了如何使用ESP32开发板破解校园网WPA2-Enterprise认证的完整指南。通过硬件准备、环境搭建、核心代码实现及常见问题排查,帮助开发者解决企业级WiFi连接难题,特别适用于校园网环境下的物联网设备开发。

weixin_29194817的博客 457

周期性线程池 newScheduledThreadPool

【代码】周期性线程池 newScheduledThreadPool。

张紫娃的博客 3533

能碳双控| AIRIOT智慧能碳管理解决方案

基于AIRIOT打造的智慧能碳管理平台解决方案结合大数据、物联网、人工智能(AI)、数字孪生等新一代信息技术,通过整合碳达峰、碳中和、实时碳价、碳配额和碳资产等多个模块,为组织提供了全方位、灵活且智能的碳资产管理解决方案,有助于实现碳管理目标、提升可持续性,并适应碳市场的不断变化。

AIRIOT的博客 1809

SiC MOSFET 失效机制详解

TDDB 指在相对较低电场(通常接近或略高于器件工作电压)下,长时间施加电压导致介电层(如栅氧化物)逐渐退化并最终击穿的现象。与即时击穿(Immediate Breakdown,由强电场直接引起)不同,TDDB 是时间相关的渐进过程,通常发生在数小时、几天甚至数年之后。核心过程:在 MOSFET 中,栅极与衬底之间施加电压时,电子通过量子隧道效应(Tunneling)注入介电层,形成缺陷或陷阱。这些缺陷积累,最终在介电层中形成导电路径(Conductive Path),导致短路和器件失效。统计特性。

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 386

线程池-newScheduledThreadPool

指定线程池的核心线程数,意味着这个线程池中将会有固定数量的线程来处理任务,即使这些线程是空闲的,线程池也不会销毁它们。虽然提供了便利的定时任务调度,但在一些复杂的场景下,可能需要自定义线程池的行为。开发者可以通过扩展类或实现自定义的来控制线程的创建、任务的调度策略等。@Override在这个示例中,我们自定义了一个,用于创建具有自定义名称和属性的线程。通过这种方式,可以更灵活地控制线程池的行为。是 Java 并发库中一个强大的工具,专门用于处理定时和周期性任务。通过。

Flying_Fish_roe的博客 2366

Unity-Mirror网络框架-从入门到精通之Mirror简介

在现代游戏开发中,网络功能日益成为提升游戏体验的关键组成部分。Mirror是一个用于Unity的开源网络框架,专为多人游戏开发设计。它使得开发者能够轻松实现网络连接、数据同步和游戏状态管理。本文将深入介绍Mirror的基本概念、如何与其他网络框架进行比较,以及如何从零开始创建一个使用Mirror的简单网络项目。Mirror是一个功能强大的Lite网络框架,旨在替代Unity的UNet网络解决方案。它提供了高效的多玩家架构、简单易用的API,以及良好的社区支持。

TxNet 3098

(优快云 迁移) JAVA多线程实现-支持定时与周期性任务的线程池(newScheduledThreadPool)

前几篇文章中分别介绍了 单线程化线程池(newSingleThreadExecutor) 可控最大并发数线程池(newFixedThreadPool) 可回收缓存线程池(newCachedThreadPool) newScheduledThreadPool用于构造安排线程池,能够根据需要安排在给定延迟后运行命令或者定期地执行。 在JAVA文档的介绍 public static Sched...

dixu4171的博客 196

基于HetConv与Dual策略的YOLOv8轻量化设计-CSPHet结构的优化与实现

在计算机视觉中,YOLOv8作为目标检测领域的最新版本,通过引入多种改进来提升检测精度和速度。然而,提升精度和保持实时性能往往需要更多参数与计算量。本文提出一种结合Dual思想与HetConv的新型轻量化结构,称为CSPHet。CSPHet能够在保持YOLOv8检测精度的基础上有效减少约70万参数量,实现模型的轻量化和速度的提升。HetConv(Heterogeneous Convolution)是一种混合卷积技术,通过同时使用1x1、3x3等不同大小的卷积核,来捕捉不同尺度的特征。

博客 1327

华为OD机试真题 新系统 - WIFI设备网络规划 (Java/Py/C/C++/Js/Go)

本文整理华为 OD 机试新系统机考真题库,涵盖高频考点精析与完整题目内容,提供 C 语言、Java、C++、Python、Go、JavaScript 多语言源码实现,搭配详细解题思路讲解,并支持在线 OJ 刷题练习,助力高效备考华为 OD 机试新系统。

算法大师! 2017

java线程池创建定时运行任务_(优快云 迁移) JAVA多线程实现-支持定时与周期性任务的线程池(newScheduledThreadPool)...

前几篇文章中分别介绍了单线程化线程池(newSingleThreadExecutor)可控最大并发数线程池(newFixedThreadPool)可回收缓存线程池(newCachedThreadPool)newScheduledThreadPool用于构造安排线程池,能够根据需要安排在给定延迟后运行命令或者定期地执行。在JAVA文档的介绍public static ScheduledExecuto...

weixin_33632843的博客 324

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Java实现终止线程池中正在运行的定时任务

源于开发 最近项目中遇到了一个新的需求,就是实现一个可以动态添加定时任务的功能。说到这里,有人可能会说简单啊,使用quartz就好了,简单粗暴。然而quartz框架太重了,小项目根本不好操作啊。当然,也有人会说,jdk提供了timer的接口啊,完全够用啊。但是我们项目的需求完全是多线程的模型啊,而timer是单线程的,so,楼主最后还是选择了jdk的线程池。 线程池是什么 Java通过E

whfstudio的博客 8770

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Java大牛教你如何实现终止线程池中正在运行的定时任务

源于开发 最近项目中遇到了一个新的需求,就是实现一个可以动态添加定时任务的功能。说到这里,有人可能会说简单啊,使用quartz就好了,简单粗暴。然而quartz框架太重了,小项目根本不好操作啊。当然,也有人会说,jdk提供了timer的接口啊,完全够用啊。但是我们项目的需求完全是多线程的模型啊,而timer是单线程的,so,楼主最后还是选择了jdk的线程池。 线程池是什么

qq_41077703的博客 2万+

NTscan扫描工具

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

Java 线程池 四种创建方式

Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。 newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。

yellowjianokok的博客 1万+

Java多线程 线程池Executor框架

Java多线程 Executor框架

Yeats_Liao的博客 3845

Java多线程(四)线程池使用方法

一、new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub } }).start(); 1、说说弊端: a. 每次new Threa...............

fox_bert的博客 9275

ExecutorService——newScheduledThreadPool使用功能测试

测试目的学习ScheduledExecutorService类创建的newScheduledThreadPool相关用法具体事例创建newScheduledThreadPool及scheduleAtFixedRate和scheduleWithFixedDelay方法的使用。package com.secbro.test.thread;import java.text.DateFormat; impo

程序新视界 3万+

Java 四种线程池

通常,最开始学Java时,最先接触到线程的就是 Thread 类和 Runnable接口。但是直接用这种方法来实现多线程是有弊端的 弊端: a. 每次new Thread新建对象性能差。 b. 线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机或oom。 c. 缺乏更多功能,如定时执行、定期执行、线程中断。 相比new Thread,Java提供的四种线程池的好处在...

Be Like 539

Java 创建线程池的四种方法

Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。newSingl...

HepBen的博客 2万+

线程池的4种创建方式

线程池四种创建方式 Java通过Executors(jdk1.5并发包)提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。 newScheduledThreadPool 创建一个定长线...

qq_35657661的博客 1138

你想了解的四个线程池,newCachedThreadPool,newFixedThreadPool,newSingleThreadExecutor,newScheduledThreadPool

了解参数 四大线程池 newCachedThreadPool 很根据用户的数量 自动创建线程连接,不清楚用户总量,例如100w(创建1/4左右的连接) 60s之内如果没有连接 借出连接 立刻销毁该连接 一个访问都没有,不创建连接 因为 i 的这块儿作用域不够大!! 直接接收i报错 final int index=i;//这里把i放入了 index的常量池方法里 常量池里的数据被所...

汤圆的博客 294
上一篇: JAVA多线程实现-可回收缓存线程池(newCachedThreadPool)
下一篇: JAVA多线程实现-获取线程执行结果
山禾_Abel
博客等级 码龄15年 30粉丝 34原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值