定时器

定时器的基本概念

定时器的功能:顾名思义是定时。给定一个时间,根据这个事件为间隔,来汇率的完成一些事情。

定时器的具体实现思路:

  1. 开辟一个线程来起到定时的作用,lock有专门的方法来实现让该线程沉睡一段时间,然后时间到达之后,由JVM来唤醒该线程,且只会唤醒由lock.wait(long time)方法引起的线程沉睡,不会使所有处在阻塞态的线程都被唤醒。
  2. 1中的线程单纯只起到定时的作用,此时使用一个内部类来产生第二个线程,功能是只用来执行方法。
  3. 让这两个线程使用同一把锁来控制多线程的执行顺序问题。(在别的环境下还可以通过使用一个众所周知的东西作为公共锁,从而保证多线程安全问题。)
  4. 这个执行方法可以让使用者来实现,因此通过一个接口来实现,并且在构造方法中给出给该接口成员赋值的方法。甚至还可以增加当该接口成员为null时报错的判断,都可以根据应用场合来实现相关功能(这里不实现报错功能)。

定时器的具体代码实现

以下是所涉及到的所有类和接口


DiDa类是核心功能实现的类

public class DiDa implements Runnable{
   
	//此为默认的沉睡时间,在构造方法中可以进行重新赋值,也可以通过setDelayTime()来修改
	private static final long DEFAULT_DELAY_TIME = 1000;
	private long delayTime;
	//这个接口有一个方法doSomething()
	private IAction action;
	//volatile是指防止该成员变量被回收
	private volatile boolean goon;
	//这就是控制两个线程同步的公共锁,在构造方法中被实例化
	private Object lock;
		
	public DiDa() {
   
		this(DEFAULT_DELAY_TIME);
	}
	
	public DiDa(long delayTime) {
   
		this(null, delayTime);		
	}
	
	public DiDa
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值