「java线程每天定时」线程定时执行定时任务要关闭吗
本篇文章给大家谈谈java线程每天定时,以及线程定时执行定时任务要关闭吗对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java定时器 每天凌晨 固定执行一个方法
- 2、java 线程定时器
- 3、用java写一个线程,指定其在每天晚上12点运行一次,求方法?
- 4、java线程定时
- 5、java如何用线程来实现定时功能
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 线程定时器
根据楼主的描述,可以有两种理解:
方法1:创建一个Timer,用于在间隔时间后调用ResultSetsql()方法
在switch值发生改变的时候对Timer进行操作
值变为0时调用timer.cancel();
值为1时调用
timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
ResultSetsql();
}
}, repeattime);
方法2:建立一个线程,每隔一秒进行循环,检查monitor switch的状态
new Thread(new Runnable() {
@Override
public void run() {
while(isRun){
if(monitor.switch == 1){
ResultSetsql();
try {
Thread.sleep(repeattime);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}).start();
两种方法有各自的适用环境,如果楼主能继续描述就更好了
欢迎继续提问
用java写一个线程,指定其在每天晚上12点运行一次,求方法?
无非就是时间匹配而已,设置两个线程,一个用于时间匹配,一个用于执行功能。除了定时器,还可以使用concurrent包的ScheduledThreadPoolExecutor,delay设为现在到12点的时间,duration设为24小时。
java线程定时
先定义一个线程
public void thread1 implements Runnable
{
public void run(){
while(true){
//加了while循环保证它一直在监视执行
// 这里先要取得本地的时间然后和3点或者4点比较一下以执行相应的操作
//这里是要执行的任务
}
}
}然后再主函数里
public void static main(String[] args){
Thread t1=new Thread(new thread1());
t1.start();
}
但是这个问题感觉跟线程没什么关系,你可以用Timer和TimerTask直接搞定
java如何用线程来实现定时功能
还是别用线程了吧,
运行一个月的线程。。。
建议这样搞:
在简历数据库中增加两个字段:简历删除时间
以及简历是否可用,
管理员删除简历时设置简历删除时间为当前时间及简历是否可用字段为unused
然后每隔一定时间跑个批处理程序,
将管理员已经删除时间过一个月的简历自动删除就行了,
当然,
也可以手动执行sql语句来删除
java线程每天定时的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于线程定时执行定时任务要关闭吗、java线程每天定时的信息别忘了在本站进行查找喔。
发布于:2022-12-16,除非注明,否则均为
原创文章,转载请注明出处。