Java如何简单实现一个定时器

本文介绍了如何在Java中自己实现一个简单的定时器,通过创建单线程或多线程线程池来执行延迟任务。文章详细阐述了实现定时器的三个步骤:定义Timer类包含任务和执行时间,创建Worker类组织任务执行,以及调用执行流程。同时,文中还提醒读者注意实现过程中的相关问题,并提供了深入学习的参考资料。
摘要由CSDN通过智能技术生成
什么是定时器?

它就像是一个闹钟一样,提醒你在一定时间之后该去做什么~~

前面在线程池的时候提到过两种可以执行延迟任务的方法
  • 创建一个单线程可以执行延迟任务的线程池,Executors.newSingleThreadScheduledExecutor();
  • 创建多个可以执行延迟任务的线程池,Executors.newScheduledThreadPool
用惯了Java提供的定时器,那么如何自己去简单实现一个定时器?

实现步骤(先描述再组织):
1.如何描述:首先提供一个Timer用来描述任务,其次Timer类里面要有一个时间(什么时候去执行任务)和任务
2.如何组织:提供一个worker类进行组织, 而woeker里面要提供执行方法和添加任务
3.进行调用

具体步骤

Timer类
//Timer类
class Timer {
   
    //里面有两个属性,时间+任务
    long time;
    Runnable runnable;//任务就是Runnable类型的,因为它里面有自带run方法,更容易执行
    //赋初值
    public Timer(Runnable runnable, long after) {
   
        this.runnable = runnable;
        //这里的时间,我们就定义成多长时间之后去执行任务,也就是延迟时间 = 当前时间+要延迟的时间
        this.time = System.currentTimeMillis() + after;
    }
}

Worker类
//组织类(Worker)
    class Worker {
   
        //1.任务的扫描和执行
        //如何扫描,也就是当初始化Worker的时候就创建一个线程一直去扫描任务
        public Worker() {
   
        }
        //首先必须有任务,所以要写一个添加任务的方法,里面要传入任务和执行时间
        public void schedule(Runnable runnable, long after) {
   
        }
    }

**完整代码**
import java.util.Date;
import java.util.concurrent.PriorityBlockingQueue;

//描述类(Timer)
class 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值