不同语言下的定时器,你都掌握了吗?

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 不同语言下的定时器,你都掌握了吗?
我们大家都对定时器不陌生,无论是现实中还是项目中,都离不开定时。在现实中,它叫闹钟,在项目上,它叫定时器,即定时触发某件事情。它能帮助我们在某一个既定的时间节点上,来提醒我们做一些事情,那么作为一个项目开发人员,你都会哪些语言来写定时器呢?

@TOC

1、Java第三方工具

利用Java实现定时器,现在项目中一般使用第三方比如 schedule 或者 xxl-job 等来处理,这里就先介绍使用第三方工具的写法。

@Component
@EnableScheduling
public class Test {

    @Scheduled(cron = "*/3 * * * * ?")
    public void test() {
        int count = 0;
        System.out.printf(count + ": " + new Date());
        count++;
    }
    
}

在这里插入图片描述

2、Java自带类

其实我们叶可以使用Java 的 SDK 自带的 Timer 类,来实现定时器功能:

  public class Test {

    public static void main(String[] args) {
        // 定义一个任务
        TimerTask stepTimerTask = new TimerTask() {
            @Override
            public void run() {
                System.out.println("运行定时Step任务:" + new Date());
                System.out.println("运行Step完毕");
            }
        };
        // 计时器
        Timer timer = new Timer();
        // 添加执行任务(延迟1s执行,每三秒执行一次)
        timer.schedule(stepTimerTask, 1000, 3000);

    }
}

在这里插入图片描述

3、JavaScript实现定时器

我们也可以使用JavaScript来实现延时定时器

var t2 = window.setInterval(function() {

console.log(‘每隔3秒钟执行一次’)

},1000)

//清除定时器
window.clearInterval(t2)  

4、C语言实现定时器

我们也可以使用C语言来实现一个简单的定时器。

void timer(long time){

 clock_t start;
 long count = 1;
 start = clock();
 
 while(1)
 {
 if((clock() - start) != (time*CLOCKS_PER_SEC))
 {
 //时间没有到,啥也不做,空循环
 }else {
   //时间到了退出循环
   // printf("%s","hello");
   break;
  }
 }
}
int main( void )
{
 for(int i=0;i<10;i++){
  timer(1);
  printf("%d\n",i);
 }
 getch();
}

5、Mysql实现定时器

我们在使用Mysql的时候,有时也会使用MySql自带的定时器,来定时执行sql语句:
例如:

-- 每天0点执行
create event if not EXISTS my_monitor 
on schedule every  1 DAY STARTS date(CURRENT_DATE+1) 
on completion preserve  do call insert_monitor(); 

当然还需要做一些前期的准备工作,比如开启Mysql的定时策略,创建存储函数等等,这里就不介绍了。

6、Shell 实现定时器

有时候,我们也会在Linux上来实现定时脚本,来定时执行一些任务:

首先我们需要一个执行的内容脚本,例如:test.sh:

echo "测试" >> /test
echo "执行时间为`date` " >> /test

然后使用 crontab -e 命令进入定时编辑

*/1 * * * * sh /test/test.sh

7、Python实现定时器

Python和Java实现定时器一样,有多种方式,这里就只介绍Python原生实现定时器:

def task():
    now = datetime.now()
    ts = now.strftime("%Y-%m-%d %H:%M:%S")
    print(ts)

 
def fun():
    while True:
        task()
        time.sleep(3)
 

fun()
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
多线程案例-定时器(附完整代码)
多线程案例-定时器(附完整代码)
298 0
|
6月前
多线程(初阶八:计时器Timer)
多线程(初阶八:计时器Timer)
105 0
|
存储 监控 C语言
西门子S7-1200编程实例,关断延迟定时器指令如何使用?
在西门子S7-1200中有四种类型的定时器:TON接通延迟定时器、TONR保持型接通延迟定时器、TOF关断延迟定时器、TP脉冲定时器。
西门子S7-1200编程实例,关断延迟定时器指令如何使用?
|
3月前
|
Web App开发 JavaScript 前端开发
JavaScript——定时器为什么是不精确的
JavaScript——定时器为什么是不精确的
64 0
|
6月前
|
JavaScript 前端开发
JavaScript如何设置定时器,怎么清除定时器
JavaScript如何设置定时器,怎么清除定时器
167 3
|
JavaScript 前端开发
JavaScript 简易的秒表计时器
JavaScript 简易的秒表计时器
111 0
实现定时器(基于标准库提供的定时器、基于优先级队列自实现的定时器)
实现定时器(基于标准库提供的定时器、基于优先级队列自实现的定时器)
|
小程序 前端开发 JavaScript
小程序计时器
小程序计时器
137 0
|
数据格式
嵌入式 QT 定时器与计时器
嵌入式 QT 定时器与计时器
|
运维 JavaScript 前端开发
brython | timer 计时器
brython | timer 计时器
85 1