当前位置: 首页 > 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,已经不建议使用

相关文章:

  • 欧拉角转为旋转矩阵
  • 二叉树的锯齿形层序遍历——灵活跳跃的层次结构解析
  • w~视觉~合集6
  • 自我觉察是成长的第一步,如何构建内心的平静
  • 【线程与进程区别】
  • Spring AI框架快速入门
  • 华为OD机试真题——最佳的出牌方法(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳实现
  • SAR ADC 比较器的offset 校正
  • 加密协议知多少
  • STP(生成树协议)原理与配置
  • AD-PCB--元件库介绍及电阻电容模型的创建 DAY4
  • SQLiteStudio - 免费开源、轻量高效,跨平台的 SQLite 数据库管理工具,代替 Navicat for SQLite
  • 数据结构与算法:数位dp
  • ORB-SLAM2学习笔记:ComputeKeyPointsOctTree分析过程记录
  • Vision + Robot New Style
  • IP证书的作用与申请全解析:从安全验证到部署实践
  • day39 pythonCNN网络
  • DeepSeek实战:打造智能数据分析与可视化系统
  • QT 5.15.2 程序中文乱码
  • 如何处理 Python 入门难以进步的现象
  • 网站关键词的优化在哪做/seo优化靠谱吗
  • 网站内容方向/网站很卡如何优化
  • 收费小说网站怎么做/注册教育培训机构需要什么条件
  • 做设计的公司的网站/百度官网app下载
  • 设计师常用素材网站/免费模板网站
  • ui做网站实例/镇江网站定制