導航:首頁 > 配伺服器 > java定時任務如何放到伺服器上

java定時任務如何放到伺服器上

發布時間:2022-04-21 21:37:47

A. java定時任務怎麼實現

/**
* 普通thread
* 這是最常見的,創建一個thread,然後讓它在while循環里一直運行著,
* 通過sleep方法來達到定時任務的效果。這樣可以快速簡單的實現,代碼如下:
* @author GT
*
*/
public class Task1 {
public static void main(String[] args) {
// run in a second
final long timeInterval = 1000;
Runnable runnable = new Runnable() {
public void run() {
while (true) {
// ------- code for task to run
System.out.println("Hello !!");
// ------- ends here
try {
Thread.sleep(timeInterval);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
Thread thread = new Thread(runnable);
thread.start();
}
}
[java] view plain
import java.util.Timer;
import java.util.TimerTask;
/**
*
* 於第一種方式相比,優勢 1>當啟動和去取消任務時可以控制 2>第一次執行任務時可以指定你想要的delay時間
*
* 在實現時,Timer類可以調度任務,TimerTask則是通過在run()方法里實現具體任務。 Timer實例可以調度多任務,它是線程安全的。
* 當Timer的構造器被調用時,它創建了一個線程,這個線程可以用來調度任務。 下面是代碼:
*
* @author GT
*
*/
public class Task2 {
public static void main(String[] args) {
TimerTask task = new TimerTask() {
@Override
public void run() {
// task to run goes here
System.out.println("Hello !!!");
}
};
Timer timer = new Timer();
long delay = 0;
long intevalPeriod = 1 * 1000;
// scheles the task to be run in an interval
timer.scheleAtFixedRate(task, delay, intevalPeriod);
} // end of main
}
[java] view plain
import java.util.concurrent.Executors;
import java.util.concurrent.ScheledExecutorService;
import java.util.concurrent.TimeUnit;
/**
*
*
* ScheledExecutorService是從Java SE5的java.util.concurrent里,做為並發工具類被引進的,這是最理想的定時任務實現方式。
* 相比於上兩個方法,它有以下好處:
* 1>相比於Timer的單線程,它是通過線程池的方式來執行任務的
* 2>可以很靈活的去設定第一次執行任務delay時間
* 3>提供了良好的約定,以便設定執行的時間間隔
*
* 下面是實現代碼,我們通過ScheledExecutorService#scheleAtFixedRate展示這個例子,通過代碼里參數的控制,首次執行加了delay時間。
*
*
* @author GT
*
*/
public class Task3 {
public static void main(String[] args) {
Runnable runnable = new Runnable() {
public void run() {
// task to run goes here
System.out.println("Hello !!");
}
};
ScheledExecutorService service = Executors
.();
// 第二個參數為首次執行的延時時間,第三個參數為定時執行的間隔時間
service.scheleAtFixedRate(runnable, 10, 1, TimeUnit.SECONDS);
}
}

B. 使用Java語言,在伺服器後台處理定時器操作

這個功能採用線程來實現將非常簡單,代碼片段:
public void 監控器 extends Thread{
public void run(){
try{
Calendar cal = Calendar.getInstance();
int minute = cal.get(Calendar.MINUTE);
if( minute%10==0 ){
// 這里寫你想執行的代碼:
}
Thread.sleep(100);
}catch(e){}
}
}
這個代碼還不能馬上運行,只是給出了一個思路:
1 使用一個線程不停得監控一個時間點。例子中的每10分鍾執行一次
2 調用到點後的相關代碼。簡單吧!
希望對你有幫助!

C. java編程:我寫了一個java定時器,怎麼樣能讓它在系統運行時開始載入,到時間了就運行啊......

後面就是具體執行的業務代碼忽略就好

D. java定時分配

我們可以使用Timer和TimerTask類在java中實現定時任務,詳細說明如下:

1、基礎知識
java.util.Timer
一種線程設施,用於安排以後在後台線程中執行的任務。可安排任務執行一次,或者定期重復執行。此類是線程安全的:多個線程可以共享單個 Timer 對象而無需進行外部同步。
java.util.TimerTask
由 Timer 安排為一次執行或重復執行的任務。

2、示例代碼
該示例實現這樣一個功能,在系統運行期間,每30分鍾,系統自動檢查連接池中的可用連接數,並輸出到日誌中。
首先創建一個需要定時執行的任務類,這個任務類需要繼承TimerTask,然後重寫run()方法,run()方法體中的代碼就是定時需要執行的操作,在本demo中,就是獲取連接池中當前可用連接數,並輸出到日誌中,具體實現代碼如下:
public class TaskAvailableConnectNumber extends TimerTask {
private Logger log = Logger.getLogger(TaskAvailableConnectNumber.class);
private ConnectionPool pool=ConnectionPool.getInstance();
@Override
publicvoid run() {
log.debug("當前連接池中可用連接數"+pool.getAvailableConnectNumber());
}
}
下面定義一個監聽器,負責在應用伺服器啟動時打開定時器,監聽器需要實現ServletContextListener介面,並重寫其中的contextInitialized()和contextDestroyed()方法,代碼如下:
public class OnLineListener implements ServletContextListener{
private Logger log = Logger.getLogger(OnLineListener.class);
Timer timer = null;
//在應用伺服器啟動時,會執行該方法
publicvoid contextInitialized(ServletContextEvent arg0) {
//創建一個定時器,用於安排需要定時執行的任務。
timer = new Timer();
//為定時器安排需要定時執行的任務,該任務就是前面創建的任務類TaskAvailableConnectNumber,並指定該任務每30分鍾執行一次。
timer.schele(new TaskAvailableConnectNumber(), 0, 30*60*1000);
log.debug("啟動定時器");
}
//應用伺服器關閉時,會執行該方法,完成關閉定時器的操作。
public void contextDestroyed(ServletContextEvent arg0) {
if(timer!=null){
timer.cancel();//關閉定時器
log.debug("-----定時器銷毀--------");
}
}
}
監聽器要想正常運行,需要在web.xml文件中進行配置,配置信息如下:
<!-- 監聽器配置開始 -->
<listener>
<listener-class>
cn.sdfi.listen.OnLineListener
</listener-class>
</listener>
<!-- 監聽器配置結束 -->
以上步驟完成後,一個簡單的定時器就算開發完成了。

E. 如何吧java程序布置成linux服務並讓它定時運行

這個是我在網上找的不知道是不是你要的:
java定時任務Timer 關於定時任務,似乎跟時間操作的聯系並不是很大,但是前面既然提到了定時任務,索性在這里一起解決了。設置定時任務很簡單,用Timer類就搞定了。一、延時執行首先,我們定義一個類,給它取個名字叫TimeTask,我們的定時任務,就在這個類的main函數里執行。代碼如下:
package test;
import java.util.Timer;
public class TimeTaskTest {
public static void main(String[] args){ Timer timer = new Timer();
timer.schele(new Task(), 60 * 1000);
}
}
解釋一下上面的代碼。上面的代碼實現了這樣一個功能,當TimeTask程序啟動以後,過一分鍾後執行某項任務。很簡單吧:先new一個Timer對象,然後調用它的schele方法,這個方法有四個重載的方法,這里我們用其中一個,

F. 我寫了一個java程序(有main函數的那種),我現在想讓這個程序每天定時在伺服器自動運行 ,望高手指點

開始->程序->附件->系統工具->任務計劃->選擇添加任務計劃->點擊下一步->點擊(瀏覽),找到你想定時執行的class文件,一步一步完成,相信你能看懂的,前提要配置好classPath

G. 用java怎樣自動從客戶端資料庫提交到伺服器資料庫

先要設置網路流,然後用伺服器監聽,
監聽到有數據過來的話然後連接伺服器資料庫進行插入修改更新操作就可以了..具體代碼現在沒有自動提交的話可以用定義一個timer讓它幫你定時提交,也可以用開源quartz框架,提交的話方法比較多可以直接用socket提交,可以用webservice等。

H. 用java做了一個簡單的定時任務工程,不知道如何讓它在伺服器上運行起來應該怎麼做

這個是我在網上找的不知道是不是你要的:

java定時任務Timer 關於定時任務,似乎跟時間操作的聯系並不是很大,但是前面既然提到了定時任務,索性在這里一起解決了。設置定時任務很簡單,用Timer類就搞定了。一、延時執行首先,我們定義一個類,給它取個名字叫TimeTask,我們的定時任務,就在這個類的main函數里執行。代碼如下:
package test;
import java.util.Timer;
public class TimeTaskTest {
public static void main(String[] args){ Timer timer = new Timer();
timer.schele(new Task(), 60 * 1000);
}
}
解釋一下上面的代碼。上面的代碼實現了這樣一個功能,當TimeTask程序啟動以後,過一分鍾後執行某項任務。很簡單吧:先new一個Timer對象,然後調用它的schele方法,這個方法有四個重載的方法,這里我們用其中一個,
public void schele(TimerTask task,long delay)
首先,第一個參數第一個參數就是我們要執行的任務。這是一個TimerTask對象,確切點說是一個實現TimerTask的類的對象,因為TimerTask是個抽象類。上面的代碼里 面,Task就是我們自己定義的實現了TimerTask的類,因為是在同一個包裡面,所以沒有顯性的import進來。Task類的代碼如下
package test;
import java.util.TimerTask;
public class Task extends TimerTask { public void run()
{
System.out.println("定時任務執行");
}
}
我們的Task必須實現TimerTask的方法run,要執行的任務就在這個run方法裡面,這里,我們只讓它往控制台打一行字。第二個參數第二個參數是一個long型的值。這是延遲的時間,就是從程序開始以後,再過多少時間來執行定時任務。這個long型的值是毫秒數,所以前面我們的程序裡面,過一分鍾後執行用的參數值就是 60 * 1000。二、循環執行設置定時任務的時候,往往我們需要重復的執行這樣任務,每隔一段時間執行一次,而上面的方法是只執行一次的,這樣就用到了schele方法的是另一個重載函數public void schele(TimerTask task,long delay,long period)
前兩個參數就不用說什麼了,最後一個參數就是間隔的時間,又是個long型的毫秒數(看來java里涉及到時間的,跟這個long是脫不了干係了),比如我們希望上面的任務從第一次執行後,每個一分鍾執行一次,第三個參數值賦60 * 1000就ok了。三、指定執行時間既然號稱是定時任務,我們肯定希望由我們來指定任務指定的時間,顯然上面的方法就不中用了,因為我們不知道程序什麼時間開始運行,就沒辦法確定需要延時多少。沒關系,schele四個重載的方法還沒用完呢。用下面這個就OK了:
public void schele(TimerTask task,Date time)
比如,我們希望定時任務2006年7月2日0時0分執行,只要給第二個參數傳一個時間設置為2006年7月2日0時0分的Date對象就可以了。有一種情況是,可能我們的程序啟動的時候,已經是2006年7月3日了,這樣的話,程序一啟動,定時任務就開始執行了。schele最後一個重載的方法是public void schele(TimerTask task,Date firstTime,long period)
沒必要說什麼了吧:)四、j2ee中的定時任務在實際的項目中,往往定時任務需要對web工程中的資源進行操作,這樣一來,用上面的單個程序的方式可能就有點力不從心了,因為很多web工程的資源它操作不到。解決的辦法是,使用Servlet,把執行定時任務的那些代碼放到Servlet的init()函數里就可以了,這個easy,就沒有必要再寫示例代碼了吧

I. 有java高手么,用過定時器quartZ的,為什麼本地eclipse可以執行,放伺服器上就不執行

我估計是本地時間和伺服器時間不一致導致的。
當在本地eclipse運行時,伺服器在本地,假如定時器是要在五點做點什麼,
伺服器(也就是你本地了,也就是你電腦時間)到五點的時候,就開始運行,不會有偏差。
當你部署到別的地方時,當本地時間五點了,但是伺服器時間(就是部署代碼的那台電腦時間)才
四點五十九,所以就沒運行。

閱讀全文

與java定時任務如何放到伺服器上相關的資料

熱點內容
回眸pdf 瀏覽:707
iwebsns源碼 瀏覽:201
python實現自動發送微信消息 瀏覽:501
如何編譯出你好兩個字 瀏覽:345
博途編譯意思 瀏覽:696
java的sort函數 瀏覽:203
切面編程拋出異常 瀏覽:72
csr的文件怎麼解壓 瀏覽:712
解壓帶製作過程 瀏覽:148
易語言編譯時不小心刪除怎麼恢復 瀏覽:848
文件夾重命名改不了名稱怎麼辦 瀏覽:228
美國恐怖故事在哪個app 瀏覽:434
轉型代駕app哪個好用 瀏覽:209
java獲取文件的類型 瀏覽:783
國外電子教材系列pdf 瀏覽:888
手機解壓rap 瀏覽:667
單片機數據記錄 瀏覽:570
安卓手機怎麼語音控制刷視頻 瀏覽:890
共享文件夾只顯示目錄 瀏覽:96
邏輯學十五講pdf 瀏覽:752