导航:首页 > 编程语言 > java定时器执行一次

java定时器执行一次

发布时间:2022-07-09 06:21:46

java 时钟(计时器) 每年年底最后一天(22:00) 执行一次(调用相应的方法)

用Timer类好一些。
--------------------------------------------------------------------------------
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class Main {
public static void main(String[] args) {
Calendar taskTime = Calendar.getInstance();
taskTime.set(Calendar.MONTH, 11);
taskTime.set(Calendar.DATE, 31);
taskTime.set(Calendar.HOUR, 22);
taskTime.set(Calendar.MINUTE, 00);
Calendar now = Calendar.getInstance();
if (taskTime.after(now)) {
// 任务时间在当前时间之后,设置当年 12/31 22:00执行
new Timer().schele(new MyTask(taskTime), taskTime.getTime());
} else if (taskTime.get(Calendar.YEAR) == now.get(Calendar.YEAR)) {
// 任务时间在当前时间之前,并且是同一年,执行一次
new Timer().schele(new MyTask(taskTime), new Date());
} else {
//
taskTime.add(Calendar.YEAR, now.get(Calendar.YEAR));
new Timer().schele(new MyTask(taskTime), taskTime.getTime());
}
}
}
class MyTask extends TimerTask {
private Calendar taskTime = null;
public MyTask(Calendar taskTime) {
this.taskTime = taskTime;
}
public void run() {
// 你要执行的
System.out.println("hello");
// 年+1
taskTime.add(Calendar.YEAR, 1);
new Timer().schele(new MyTask(taskTime), taskTime.getTime());
}
}

⑵ 在java中如何让定时器只启动一次

具体的做法:

Timer timer = new Timer();

timer.schele(new MyTask(), 1000)。

⑶ java做一个定时器,两台服务器,同一个时间执行,但我只要执行一次,要怎样做

你可以把另外一台服务器上面的定时器干掉,目前我们多服务器部署的时候都只会在一台服务器部署带定时器的Java项目。如果不想这样子的话你可以去研究一下负载均衡看能不能实现你的这个需求了。

⑷ java定时器 每天12点 固定执行一个方法

可以使用timer的schele方法实现定时任务,例如:把下面的new Date()参数换为你要定时的时间,创建一个线程执行你的任务

public class 定时 {

public static void main(String[] args) {
Timer timer = new Timer();
timer.schele(new myTest(), new Date());
}
}

class myTest extends TimerTask {

@Override
public void run() {
//你要执行的任务
}
System.out.println(hour + ":" + fen + ":" + sec + ":" + i);

}

修改一下就可以了

⑸ 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.schele(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事件触发计时器后二十四小时后只执行一次业务逻辑

java中有个定时任务 java.util.TimerTask

用法很简单

classMyTaskextendsjava.util.TimerTask{
@Override
publicvoidrun(){
//这个任何所执行的代码
}
}


java.util.Timertimer=newTimer(true); //treu就是守护线程
MyTasktask=newMyTask();
//开始执行任务,第一个参数是任务,第二个是延迟时间,第三个是每隔多长时间执行一次
timer.schele(task,0,1000*60*60*24);

⑺ java Timer定时器执行一次后意外终止

java.util.Timer 不推荐使用。
使用 java.util.concurrent.ScheledExecutorService 执行

⑻ java中每个月第一天执行一次任务的定时器如何实现

Date d = new Date();//获取服务器的时间。。。
Calendar c= Canlendar.getInstance();
c.setTime(d);

if(c.get(Calendar.DAY_OF_MONTH) == 1) //当前是1号
{
//拿出党员的入党日期(年月)同当前月进行比较 如果相同 发送短信
// //写下你的判断代码
}
else //当前不是1号 则从下个月1号开始执行定期任务
{

c.set(Calendar.MONTH,c.get(Calendar.MONTH)+ 1);//设置为下月
c.set(Calendar.DAY_OF_MONTH,1);//设置为下月的1号

Timer timer =new Timer();

timer.scheleAtFixedRate(new TimerTask()
{
public void run()
{
//每天都来判断一下 如果当前日期是1号
////则拿出党员的入党日期(年月)同当前月进行比较 如果相同 发送短信
//run函数里写下你的判断代码
}},c.getTime(),24* 3600*1000); //每天执行一次run()方法...
}

⑼ 在java中如何让定时器只启动一次

Timer timer = new Timer();
timer.schele(new MyTask(), 1000);

这种方式就行, 如果要中途取消,就用timer.cancel();

阅读全文

与java定时器执行一次相关的资料

热点内容
不能修改的pdf 浏览:736
同城公众源码 浏览:474
一个服务器2个端口怎么映射 浏览:282
java字符串ascii码 浏览:61
台湾云服务器怎么租服务器 浏览:461
旅游手机网站源码 浏览:315
android关联表 浏览:929
安卓导航无声音怎么维修 浏览:322
app怎么装视频 浏览:423
安卓系统下的软件怎么移到桌面 浏览:80
windows拷贝到linux 浏览:755
mdr软件解压和别人不一样 浏览:888
单片机串行通信有什么好处 浏览:324
游戏开发程序员书籍 浏览:848
pdf中图片修改 浏览:275
汇编编译后 浏览:480
php和java整合 浏览:835
js中执行php代码 浏览:447
国产单片机厂商 浏览:62
苹果手机怎么设置不更新app软件 浏览:289