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

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

@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()
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
数据安全/隐私保护
Register fail:AuthenticationaFailureException
Register fail:AuthenticationaFailureException
183 1
|
存储 Cloud Native 测试技术
多主架构:VLDB 技术论文《Taurus MM: bringing multi-master to the cloud》解读
本文分享自华为云社区《多主创新,让云数据库性能更卓越》,作者: GaussDB 数据库。 华为《Taurus MM: bringing multi-master to the cloud》论文被国际数据库顶会 VLDB 2023 录用,这篇论文里讲述了符合云原生数据库特点的超燃技术。介绍了如何通过各种黑科技减少云原生数据库的网络消耗,进而提升云原生数据库的性能和稳定性。下面就让我们抽丝剥茧,细细品味技术的魅力,揭开华为云数据库多主技术的面纱。 说明:技术论文中的 Taurus 在华为云商用的产品名是 GaussDB (for MySQL),是 GaussDB (for MySQL) 的云原
315 0
java202304java学习笔记第六十天-ssm-spring配置文件-集合注入8
java202304java学习笔记第六十天-ssm-spring配置文件-集合注入8
82 0
|
Web App开发 JavaScript 前端开发
新版Firefox 63浏览器将加入指纹识别和加密货币保护功能
密码编码器不仅使用CPU资源来挖掘加密货币,而且从长远来看还会影响计算机的性能。
525 0
|
14天前
|
存储 弹性计算 人工智能
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
2025年9月24日,阿里云弹性计算团队多位产品、技术专家及服务器团队技术专家共同在【2025云栖大会】现场带来了《通用计算产品发布与行业实践》的专场论坛,本论坛聚焦弹性计算多款通用算力产品发布。同时,ECS云服务器安全能力、资源售卖模式、计算AI助手等用户体验关键环节也宣布升级,让用云更简单、更智能。海尔三翼鸟云服务负责人刘建锋先生作为特邀嘉宾,莅临现场分享了关于阿里云ECS g9i推动AIoT平台的场景落地实践。
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
|
6天前
|
云安全 人工智能 安全
Dify平台集成阿里云AI安全护栏,构建AI Runtime安全防线
阿里云 AI 安全护栏加入Dify平台,打造可信赖的 AI