「java计时器执行函数」java线程计时器

博主:adminadmin 2023-03-20 14:42:11 406

今天给各位分享java计时器执行函数的知识,其中也会对java线程计时器进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

如何用java实现一个计时器?

用java实现一个计时器的方法:

public class TestDingShi implements Runnable

{

Thread xc;

Dao dao=new DaoImpl();

public TestDingShi()

{

xc=new Thread(this);//线程开启

xc.start();

}

public void run()

{

while (true)

{

try

{

xc.sleep(1000);//睡眠开始计时

}

catch (InterruptedException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

//TODO定时在此

}

}

}

java计时器实现定时执行函数

public class Test {

public static void main(String[] args) throws Exception {

while (true) {

System.out.println("1");

Thread.sleep(5000);

}

}

}

java timer wait函数怎么用

Timer 是一种定时器工具,用来在一个后台线程计划执行指定任务,这些任务可以被执行一次,也可以被定期执行。每个 Timer 对象对应一个后台线程,顺序地执行所有计时器任务。如果完成某个计时器任务的时间太长,那么它会“独占”计时器的任务执行线程,从而可能延迟后续任务的执 行。对 Timer 对象最后的引用完成并且所有未处理的任务都已执行完成后,计时器的任务执行线程会正常终止(并且成为垃圾回收的对象)。TimerTask是一个抽象类, 实现了Runable接口,它的子类代表一个可以被Timer计划的任务。

1) 一个简单的Demo,让大家对Timer、TimerTask的使用有感性的认识。

2) Timer和TimerTask的常用api函数说明

这里强调Timer类的schedule和scheduleAtFixedRate的区别。schedule和 scheduleAtFixedRate的区别在于,schedule以固定的相对时间间隔执行,如果某一次执行被延时了,往后的执行的执行时间也会相对 延时;而scheduleAtFixedRate是以绝对的时间间隔执行,如果某一次执行被延时,它的后一次执行的延时将会缩短 (scheduleAtFixedRate会把已经过去的时间也作为周期执行)。schedule注重的是时间间隔的稳定,而 scheduleAtFixedRate注重的是执行频率的稳定。

3) Timer的终止

默认情况下,只要一个程序的timer线程在运行,那么这个程序就会保持运行。当然,你可以通过以下四种方法终止一个timer线程:

a)调用timer的cancle方法。你可以从程序的任何地方调用此方法,甚至在一个timer task的run方法里;

b)让timer线程成为一个daemon线程(可以在创建timer时使用new Timer(true)达到这个目地),这样当程序只有daemon线程的时候,它就会自动终止运行;

c)当timer相关的所有task执行完毕以后,删除所有此timer对象的引用(置成null),这样timer线程也会终止;

d)调用System.exit方法,使整个程序(所有线程)终止。

总结:Timer和TimerTask可以简单理解为Timer定时器在触发TimerTask任务调用,通常用schedule和 scheduleAtFixedRate方法来调用timertask任务,cancle来终止任务调用。Timer简单易用,比较适合提供轻量级的计时 器功能,但是对时效性很强的任务调度请用其它方法来实现(正如javadoc所述”Timer does not offer real-time guarantees: it schedules tasks using the Object.wait(long) method”)。

java定时器 每天凌晨 固定执行一个方法

二、如果是需要Tomcat启动就能执行,不需要main方法的定时器的话:

web.xml里面需要这么配置:

listener

listener-class

com.InitListener

/listener-class

/listener

第一个类:InitListener

package com.listener;

import java.util.Calendar;

import java.util.Date;

import java.util.Timer;

import javax.servlet.ServletContextEvent;

import javax.servlet.ServletContextListener;

/**

* 系统启动时的监听类 初始化系统数据

*

* @author jhoneder

*

*/

public class InitListener implements ServletContextListener {

public void contextDestroyed(ServletContextEvent arg0) {

// TODO Auto-generated method stub

// context销毁时,销毁初始化数据

}

public void contextInitialized(ServletContextEvent event) {

// TODO Auto-generated method stub

try {

goTimmer();

} catch (Exception e) {

System.out.println("失败:" + e.getMessage());

}

}

private void goTimer() {

Timer timmerTask = new Timer();

Calendar calEnviron = Calendar.getInstance();

// 每天的02:00.am开始执行

calEnviron.set(Calendar.HOUR_OF_DAY, 2);

calEnviron.set(Calendar.MINUTE, 00);

// date为制定时间

Date dateSetter = new Date();

dateSetter = calEnviron.getTime();

// nowDate为当前时间

Date nowDateSetter = new Date();

// 所得时间差为,距现在待触发时间的间隔

long intervalEnviron = dateSetter.getTime() - nowDateSetter.getTime();

if (intervalEnviron 0) {

calEnviron.add(Calendar.DAY_OF_MONTH, 1);

dateSetter = calEnviron.getTime();

intervalEnviron = dateSetter.getTime() - nowDateSetter.getTime();

}

// 每24小时执行一次

timmerTask.schedule(new UseTimer(timmerTask), intervalEnviron, 1 * 1000 * 60 * 60 * 24);

}

}

第二个类:

package com.listener;

import java.util.Timer;

import java.util.TimerTask;

/**

* 被调用执行类

*

* @author Administrator

*

*/

public class UseTimer extends TimerTask {

Timer timer = new Timer();

public UseTimer(Timer timer) {

this.timer = timer;

}

/*

* 被调用具体的方法

*/

public void run() {

System.out.println("开始具体执行!");

}

}

不懂得话可以追问!

java有没有计时的函数?(类似于JavaScript的“setTimeout("……",1);”

刚回答过人

public static void main(String[] args) {

Timer timer = new Timer();

timer.schedule(new TimerTask() {

@Override

public void run() {

// TODO Auto-generated method stub

System.out.println("执行");

}

}, 0, 1000);

// timer.cancel();

}

java计时器执行函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java线程计时器、java计时器执行函数的信息别忘了在本站进行查找喔。