传统定时器(一)

本文详细介绍了Java中使用Timer类实现定时任务的基本原理及应用案例,包括如何创建Timer对象,定义并调度TimerTask,以及如何在实际项目中合理利用定时任务提升效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.ygl;

import java.util.TimerTask;
public class MyTask extends TimerTask{

@Override
public void run() {
System.out.println("boombing");

}

}

//****************************

package com.ygl;


import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class TraditionTimerTest {
public static void main(String[] args) {
Timer timer=new Timer();
TimerTask myTask=new MyTask();
timer.schedule(myTask, 10000,3000);//第一次10s后触发,以后每隔3秒触发
while(true){
System.out.println(new Date().getSeconds());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}
}

//***********************************

32
34
35
36
37
38
39
40
41
42
boombing
43
44
45
boombing
46
47
48
boombing
49
50
51
boombing

### 定时器的创建方式 #### 在代码中创建定时器 在编程环境中,可以通过多种方法实现定时器功能。以下是几种常见的技术: 1. **Python中的`threading.Timer`模块** Python标准库提供了`threading.Timer`类来实现延迟调用的功能。该类允许指定个函数,在经过定的时间间隔后执行。 ```python import threading def my_function(): print("Timer executed!") timer = threading.Timer(5.0, my_function) # 延迟5秒后执行my_function timer.start() ``` 2. **C/C++中的信号处理机制** 在C/C++中,可以利用POSIX信号和`setitimer()`函数来创建高精度的定时器[^3]。 ```c #include <signal.h> #include <stdio.h> void handler(int sig) { printf("Timer expired!\n"); } int main() { struct itimerval timer; signal(SIGALRM, handler); timer.it_value.tv_sec = 2; // 初次触发时间为2秒 timer.it_value.tv_usec = 0; timer.it_interval.tv_sec = 1; // 后续每次触发间隔为1秒 timer.it_interval.tv_usec = 0; setitimer(ITIMER_REAL, &timer, NULL); while (1); // 防止程序退出 return 0; } ``` 3. **JavaScript中的`setTimeout`和`setInterval`** JavaScript提供了两种内置的方法用于定时操作:`setTimeout`(次性延时)和`setInterval`(重复延时)。这些方法通常应用于浏览器环境或Node.js服务器端脚本中。 ```javascript setTimeout(() => console.log('Executed after 3 seconds'), 3000); // 单次执行 setInterval(() => console.log('Executed every second'), 1000); // 循环执行 ``` --- #### 在Linux操作系统中设置定时任务 对于Linux系统而言,主要通过`cron`服务配置定期运行的任务。 1. **基本语法结构** `crontab`文件由六个字段组成,分别表示分钟、小时、日期、月份、星期几以及待执行命令。各字段之间以空格分隔开。 ``` * * * * * command_to_execute ┬ ┬ ┬ ┬ ┬ │ │ │ │ │ │ │ │ │ └─── 星期几 (0–7) (0 或 7 表示周日) │ │ │ └────── 月份 (1–12) │ │ └──────── 日子 (1–31) │ └────────── 小时数 (0–23) └──────────── 分钟数 (0–59) ``` 2. **解决低于分钟粒度需求** Linux原生`crontab`不支持秒级调度,但可通过其他手段间接达成目标。例如借助无限循环配合睡眠指令完成更精细控制[^4]: ```bash #!/bin/bash while true; do python /path/to/script.py >> /var/log/mylog.log 2>&1 sleep 5 # 每五秒钟唤醒次 done & ``` 3. **高级工具推荐** 如果项目复杂度较高或者需要跨平台兼容,则考虑采用专门设计的工作流引擎如Airflow、Celery等框架替代传统shell脚本方案。 --- ### 总结 无论是开发阶段还是运维场景下,“定时”都是不可或缺的项基础能力。针对不同层次的应用场合可以选择合适的解决方案——从轻量级的语言内部API到重量级的企业级分布式任务管理系统均有涉猎。以上列举了几种典型实例供参考选用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ygl6150373

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值