博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java中Timer的使用
阅读量:4113 次
发布时间:2019-05-25

本文共 1181 字,大约阅读时间需要 3 分钟。

Timer为定时周期性执行调度性能没有concurrent包下的高,不过原理还是需要了解下的,手续看下使用:

 

Timer timer = new Timer("Fetch thread");timer.scheduleAtFixedRate(new TimerTask() {	@Override	public void run() {				try {			Thread.sleep(10000);		} catch (InterruptedException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}		System.out.println("**Fetch thread1 run**"				+ this.scheduledExecutionTime());	}}, 1000, 10);timer.schedule(new TimerTask() {	@Override	public void run() {		try {			Thread.sleep(10000);		} catch (InterruptedException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}		System.out.println("**Fetch thread2 run**"				+ this.scheduledExecutionTime());	}}, 1000, 10);

执行打印结果:

 

 

schedule:**Fetch thread2 run**1387522409123**Fetch thread2 run**1387522419125**Fetch thread2 run**1387522429126scheduleAtFixedRate:**Fetch thread1 run**1387522551056**Fetch thread1 run**1387522551066**Fetch thread1 run**1387522551076

总结:

 

schedule方法:在上次执行结束之后开始按某固定的rate执行

scheduleAtFixedRate方法:在上次执行开始时开始按某固定的rate执行,也就是说不关心上次是否执行完成此次执行就已经开始了so要注意并发。

 

实现原理:

Timer里维护了一个TimerThread,而TimerThread里维护了一个TaskQueue,所有的TimerTask都放在此TaskQueue种,在TimerThread中执行while(ture)通过对TaskQueue的notify wait来实现操作。

 

转载地址:http://tpqsi.baihongyu.com/

你可能感兴趣的文章
设计模式
查看>>
php基础教程-输出Hello World
查看>>
RAID LVM ISCSI
查看>>
mysql报错
查看>>
html5 canvas路径绘制2
查看>>
HDU 2141 Can you find it?(二分)
查看>>
python中的数据结构
查看>>
第一天进入博客这个神奇的领域 在此%%%erosun
查看>>
新手对Spring的图解和一点个人理解
查看>>
Mac OS 10.6.5上如何默认启动mysq服务
查看>>
IC设计流程
查看>>
Linux下的redis安装和发布订阅
查看>>
实现刮刮乐的效果
查看>>
JavaScript箭头函数中的this详解
查看>>
I/O系统,多线程、图形用户界面编程
查看>>
矩阵优化总结
查看>>
Learn GIT
查看>>
Tensorflow常用方法
查看>>
Centos7中给gitLab汉化
查看>>
mysql中的列属性
查看>>