java timer 用法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java timer 用法相关的知识,希望对你有一定的参考价值。
最简单的用法,从1秒后开始,3秒后结束。给段小代码吧!
import java.util.Timer;public class TimerTest1
static class MyTask extends java.util.TimerTask
public void run()
System.out.println("开始");
static class Shutdown extends java.util.TimerTask
Timer timer = null;
public Shutdown()
public Shutdown(Timer mytimer)
timer = mytimer;
public void run()
System.out.println("结束");
timer.cancel();// 使用这个方法退出任务
public static void main(String[] args)
Timer timer = new Timer();
timer.schedule(new MyTask(), 1000);// 在1秒后执行此任务
timer.schedule(new Shutdown(timer), 3000);// 在3秒后执行此任务
参考技术A java.util.TimerTask 当作是一个线程,只要覆盖run方法就可以。
java.util.Timer
void schedule(TimerTask task, Date time)
Schedules the specified task for execution at the specified time.
void schedule(TimerTask task, Date firstTime, long period)
Schedules the specified task for repeated fixed-delay execution, beginning at the specified time.
void schedule(TimerTask task, long delay)
Schedules the specified task for execution after the specified delay.
void schedule(TimerTask task, long delay, long period)
Schedules the specified task for repeated fixed-delay execution, beginning after the specified delay.
两个对象配合,就可以。要多久停止,就用period和计数器了。 参考技术B java api 里面的详细解释:
安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。以近似固定的时间间隔(由指定的周期分隔)进行后续执行。
在固定延迟执行中,根据前一次执行的实际执行时间来安排每次执行。如果由于任何原因(如垃圾回收或其他后台活动)而延迟了某次执行,则后续执行也将被延迟。从长期来看,执行的频率一般要稍慢于指定周期的倒数(假定 Object.wait(long) 所依靠的系统时钟是准确的)。
固定延迟执行适用于那些需要“平稳”运行的重复活动。换句话说,它适用于在短期运行中保持频率准确要比在长期运行中更为重要的活动。这包括大多数动画任务,如以固定时间间隔闪烁的光标。这还包括为响应人类活动所执行的固定活动,如在按住键时自动重复输入字符。
参数:
task - 所要安排的任务。
delay - 执行任务前的延迟时间,单位是毫秒。
period - 执行各后续任务之间的时间间隔,单位是毫秒。
还有安装你的意思你好像只需要在10秒后执行一次就好了,但是就不应该用t.schedule(task, delay, period),应该用的是t.schedule(task, delay,),你用的那个是会重复执行的,间隔为period毫秒; 参考技术C Timer timer = new Timer();
timer.schedule(new DoSomeThing(), 1*60*1000);
1秒后执行DoSomeThing 里面写个静态的方法执行你的逻辑
Java中Timer的用法
现在项目中用到需要定时去检查文件是否更新的功能。timer正好用于此处。
用法很简单,new一个timer,然后写一个timertask的子类即可。
代码如下:
package comz.autoupdatefile; import java.util.Timer; import java.util.TimerTask; public class M { public static void main(String[] args) { // TODO todo.generated by zoer Timer timer = new Timer(); timer.schedule(new MyTask(), 1000, 2000); } } class MyTask extends TimerTask { @Override public void run() { System.out.println("dddd"); } }
这样,就可以在1秒钟之后开始执行mytask,每两秒钟执行一次。
当然,timer的功能也可以通过自己构造线程,然后在线程中用sleep来模拟停止一段时间,然后再执行某个动作。
其实,看一下timertask的源码就立即可以知道,timertask就是实现了runnable接口的。也就是说,通过timer来间隔一段时间执行一个操作,也是通过一个线程来做到的。
【这样就节省自己写线程的时间啦】
以上是关于java timer 用法的主要内容,如果未能解决你的问题,请参考以下文章