当前位置: 首页 > news >正文

Java开发之定时器学习

面试

一、线程池实现定时器

核心代码:

    public static void main(String[] args) {ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(5);Runnable runnable = () -> System.out.println("当前线程=="+Thread.currentThread().getName());// 延时1秒,每2秒执行一次scheduledExecutorService.scheduleAtFixedRate(runnable,1,2, TimeUnit.SECONDS);scheduledExecutorService.scheduleWithFixedDelay(runnable,1,2,TimeUnit.SECONDS);}

控制台输出
在这里插入图片描述

scheduleAtFixedRate和scheduleWithFixedDelay都是延时按固定频率执行任务,区别就在于前者是严格按照固定频率执行,不管上一个任务有没有执行完毕,后者是在前一个任务执行完成后再加上固定频率来执行,这样就不会出现两个或多个任务同时执行的情况,这在实际业务中要根据具体场景来选择合适的实现方法

二、@Scheduled注解

在spring boot项目中优先使用此方式,支持cron表达式,代码简洁明了
注意类的两个注解不能忘

@Component
@EnableScheduling
public class TestSchedule {// 延时2秒,每5秒执行一次@Scheduled(fixedRate = 5000,initialDelay = 2000)public void executeRate(){System.out.println("5秒一次,固定频率=="+Thread.currentThread().getName());}// 在每天16:14分定点执行一次@Scheduled(cron = "0 14 16 * * *")public void executeCron(){System.out.println("定点执行=="+Thread.currentThread().getName());}
}

控制台输出如下
在这里插入图片描述
至于其他实现方式,比如Timer和TimerTask,已经不建议使用

http://www.xdnf.cn/news/694495.html

相关文章:

  • LVS -DR
  • 每日算法 -【Swift 算法】正则表达式匹配:支持 `.` 和 `*`
  • 如何设计高效的数据湖架构:存储策略、Schema 演进与数据生命周期管理
  • 基于51单片机的音乐盒汽车喇叭调音量proteus仿真
  • 基于Doc2Vec的Markdown文档分类实战:从预处理到模型评估
  • 部署swagger接口文档到云服务器
  • ZooKeeper 命令操作
  • Gin项目脚手架与标配组件
  • 网络协议DHCP
  • YOLO 系列算法的参数量
  • Java大师成长计划之第33天:应用监控与日志管理
  • 顺序表与链表专项训练:在 LeetCode 实战中深化数据结构理解
  • 力扣 秋招 打卡第一天 2025年5月28日 Java
  • Vim 中设置插入模式下输入中文
  • 考研系列-操作系统:第一章、计算机系统概述
  • freecad TechDraw工作台中虚线(隐藏线)的实现方式
  • 桥梁进行3D建模时的数据采集、存储需求及技术参数
  • 监控 Oracle Cloud 负载均衡器:使用 Applications Manager 释放最佳性能
  • android平台驱动开发(六)--Makefile和Kconfig简介
  • vue 实现鼠标放上后显示,挪开后隐藏(点击显示/隐藏)
  • 【微波遥感第一期】基本概念
  • OpenCV CUDA模块直方图计算------在 GPU 上计算图像直方图的函数calcHist()
  • 在部署了一台mysql5.7的机器上部署mysql8.0.35
  • QGraphicsView、QGraphicsScene和QGraphicsItem图形视图框架(七)修改item属性
  • Golang分布式系统开发实践指南
  • GO语言进阶:掌握进程OS操作与高效编码数据转换
  • 命象架构法 02|你的系统有“用神”吗?
  • [Python] 如何使用 Python 调用 Dify 工作流服务实现自动化翻译
  • Java常用加密方式
  • 聊一聊如何使用自动化测试来提高接口测试效率的?