2014-07-14 85 views
0

我在Java中這些方法應該例如運行每隔一小時自動運行的Java方法:每隔一小時

public static void main(String[] args) throws Exception{  
    readLog(); // method to read log file 
    sortByDate(); //sort punch in data by day 
    checkPeopleIn(); // check people who are in, add and remove to list accordingly 
    output_details(); //output final details 
    System.out.print("_____________________________________");  
} 

我將如何添加此功能,這個程序?在處理中,我曾經使用millis()方法創建一個計時器,但是我找不到相應的....是否可用?

在此先感謝

+0

運行一個線程,該線程檢查小時。每次是x.00,檢查是否在這個小時內它已經運行,如果沒有運行。 – Stultuske

+0

@Stultuske認真嗎?積極等待... – Henry

+0

你看過Quartz API嗎? –

回答

2

看看Java Executor framework

ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor(); 
service.scheduleAtFixedRate(new Runnable() { 
    @Override 
    public void run() { 
     readLog(); // method to read log file 
     sortByDate(); //sort punch in data by day 
     checkPeopleIn(); // check people who are in, add and remove to list accordingly 
     output_details(); //output final details 
     System.out.print("_____________________________________"); 
    } 
}, 0, 1, TimeUnit.HOURS); 
service.shutdown(); 

從這個thread: 「如果你可以用它代替定時器ScheduledThreadExecutor,這樣做。」

+1

並且確保要麼關閉執行程序,要麼使其成爲守護進程線程,如果您想要正常停止進程。 – lyomi

+1

使用'TimeUnit.HOURS'可能更有意義,而不是計算一小時內的秒數。 – Keppil

+0

我實現了這個代碼,並用main方法替換它。但是我得到的錯誤,只有....不知道我是否正確實施它。感謝您的幫助 –

3

如果這是一個長期運行的應用程序就像一個守護進程或再使用服務計時器是確定的解決方案的一部分。

如果你想每隔一小時運行你的java應用程序,你需要一個操作系統特定的解決方案(如cron)。

+0

我明白你的意思,是有道理的。這是應用程序根據手動掃描儀生成的日誌文件檢查建築物中的誰。 –

+0

那麼它在那裏坐在那裏運行24x7或者你只是想每小時點燃一次? – John3136

+0

手動掃描器每1小時輪詢一次數據到一個日誌文件,所以在輪詢之後,我需要讀取這個日誌文件並輸出一個更新的文件。 –

1

結賬quartz-scheduler。它是一個功能豐富的開源作業調度庫,可集成到幾乎任何Java應用程序中 - 從最小的獨立應用程序到最大的電子商務系統

+0

看起來不錯!感謝您的輸入! –

相關問題