> 文章列表 > 不同语言下的定时器,你都掌握了吗?

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

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

我们大家都对定时器不陌生,无论是现实中还是项目中,都离不开定时。在现实中,它叫闹钟,在项目上,它叫定时器,即定时触发某件事情。它能帮助我们在某一个既定的时间节点上,来提醒我们做一些事情,那么作为一个项目开发人员,你都会哪些语言来写定时器呢?

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

  • 1、Java第三方工具
  • 2、Java自带
  • 3、JavaScript实现定时器
  • 4、C语言实现定时器
  • 5、Mysql实现定时器
  • 6、Shell 实现定时器
  • 7、Python实现定时器

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() {@Overridepublic 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()