1. 如何讓java定時執行一個方法
你可以通過 spring的定時器來實現該功能, 給你一個例子吧.
Timer.xml 配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<!-- <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"> -->
<beans default-autowire="byName" default-lazy-init="true">
<bean id="zntask" class="com.soft.util.quartzTask"></bean> <!—實現定時功能的類-- >
<bean id="ZntaskTopSaleJobDetail"
class="org.springframework.scheling.quartz.">
<property name="targetObject" ref="zntask"></property>
<!—quartzTask 定時調用的方法 znrwdb -- >
<property name="targetMethod" value="znrwdb"></property>
</bean>
<bean id="zntaskTrigger" class="org.springframework.scheling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="ZntaskTopSaleJobDetail"/>
</property>
<property name="cronExpression">
<value>0 0 0 12 * * ?</value> <!-- 每隔12小時 執行一次 -->
</property>
</bean>
<bean class="org.springframework.scheling.quartz.SchelerFactoryBean">
<property name="triggers">
<list>
<ref bean="zntaskTrigger"/>
</list>
</property>
</bean>
</beans>
最後將 timer.xml 引入spring的applicationContext.xml文件即可,啟動伺服器時會自動載入執行定時方法 znrwdb
Eg:
applicationContext.xml 中:
<!-- 引入定時器 -->
<import resource=" timer.xml」 />
2. 如何讓java定時執行一個方法
現在能想到的是三種方法能實現:
1、普通thread實現
:是最常見的,創建一個thread,然後讓它在while循環里一直運行著,通過sleep方法來達到定時任務的效果。
2、timertask
:啟動和去取消任務時可以控制,第一次執行任務時可以指定你想要的delay時間。
3、scheledexecutorservice實現
:最理想的定時任務實現方式,相比於timer的單線程,它是通過線程池的方式來執行任務的,可以很靈活的去設定第一次執行任務delay時間,提供了良好的約定,以便設定執行的時間間隔等。
希望能幫到你。
3. 我有一個java程序的jar包,如何在.bat文件中定時循環定時執行,比如說定時五分鍾執行一次
在jar文件里的main方法執行定時器,也就是Timer,設置五分鍾執行一次,把要執行的代碼方到Timer的方法里
4. java怎麼根據用戶設定的時間執行定時任務
// 一天的毫秒數
long daySpan = 24 * 60 * 60 * 1000;
// 規定的每天時間15:33:30運行
final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd '15:33:30'");
// 首次運行時間
Date startTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(sdf.format(new Date()));
// 如果今天的已經過了 首次運行時間就改為明天
if(System.currentTimeMillis() > startTime.getTime())
startTime = new Date(startTime.getTime() + daySpan);
Timer t = new Timer();
TimerTask task = new TimerTask(){
@Override
public void run() {
// 要執行的代碼
System.err.println("xxxxxxxxx");
}
};
// 以每24小時執行一次
t.scheleAtFixedRate(task, startTime, daySpan);
5. 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("開始具體執行!");
}
}
不懂得話可以追問!
6. 怎麼在java後台,寫個定時任務。比如,十分鍾執行一次介面。
對於這樣的操作最方便、高效的實現方式就是使用java.util.Timer工具類。
private java.util.Timer timer;//給你標注一下包,到時候別找錯了
timer = new Timer(true);
timer.schele(
new java.util.TimerTask() { public void run()
{ //你要定時執行的功能} }, 0, 30*1000);
第一個參數是要操作的功能,一般匿名內部類,第二個參數是要設定延遲的時間,第三個參
數是周期的設定,每隔多長時間執行該操作。
更詳細的內容,自己找API Timer類看看吧
7. 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);
}
修改一下就可以了