Java定时器(Timer)的简单使用

本文介绍了如何使用Java Timer类创建一个定时器,通过一个模拟骑车时间的案例,展示了如何每秒输出骑行状态并响应用户停止指令。通过分析代码,解释了如何启动和停止定时器,并强调了线程同步的重要性。

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

首先,了解什么是(Timer):Timer,定时器,功能是在指定的时间间隔内反复触发指定窗口的定时器事件。

现在用一个案例来具体了解下定时器的使用。

需求:模拟骑车时间,比如,每骑行一秒就输出一句“骑行第几秒”,直到用户输如随意指令就停止输出。

执行效果如图所示:


效果分析:首先需要控制台输入一个任意指令,让程序开始跑起来,接着开始每隔一秒钟输出一句话提醒用户。直到用户再次随意输入一个指令,输出停止。

在开始写代码之前,我们要明确,这肯定不是一个线程就能解决的事情,因为一个线程就只有一条线再跑,而用户输入就需要一个Scanner语句,但凡是Scanner语句,一定会在跑的这个线阻塞在Scanner的输入语句上面,那么这时候,就可以引用定时器这个东西。

以上的执行效果代码如下:


System.out.print("你輸入啥都可以開始使用");
    if (in.next() != null) {
        Timer timer=new Timer();
        timer.schedule(new TimerTask() {
            int i=0;
            @Override
            public void run() {
                i=i+1;
                System.out.println("骑行第"+(i)+"秒");
                times=i;
            }
        },0,1000);
        if(in.next()!=null){
            timer.cancel();
            System.out.println("骑行结束!");

        }
  }  

代码分析

首先让用户随意输入一个指令,判断当这个输入的指令不为空时,就走进计时器中,此时走入if语句当中。

接着实例化一个定时器,也就是Timer timer=new Timer;

调用Timer的schedule(TimerTask task(){},延迟时间,定时时间)方法。这时候调用这个方法需要传三个参数给这个方法,一个是TimerTask的一个抽象类,延迟时间,定时的时间,时间都用毫秒计算。强调一点,TimerTask是一个抽象类,就要继承这个抽象类中的所有方法,发现这个抽象类中有一个run()方法,这个时候,就需要将我们需要的输出“骑行第多少秒”这句话写在run方法中,让这个定时器每次走的时候,都输出,没有给他停止的命令,他就会一直走。

这个时候,主线程中,有一个一直等待用户输入的语句,这个和计时器的运行不冲突,直到用户输入了任意指令,进入一个if里面,接着执行timer的cancel()方法,将这个计时器停止掉,此时,计时器的功能就停止了,继续开始执行主线程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值