人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Javaで5分おきに定期的にある処理を1日じゅう実行し続けるには。
表題のようなことをやるたいのですが、例えば下記URLには定期的に実行するコードが書かれていますが、1日中1ヶ月以上実行し続けさせたい場合(ある種のサーバにしたい)、下記URLのような手法で大丈夫でしょうか?

Linuxならcronで動かすと思うのですが、そちらの方がベターでしょうか?
またWindowsで動かしたい場合は、どうすべきでしょうか?

http://www.atmarkit.co.jp/fjava/javatips/078java008.html

●質問者: koime_ryokutya
●カテゴリ:コンピュータ インターネット
✍キーワード:Java Linux URL Windows コード
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● taroe
●23ポイント

Windowsならatコマンドでスケジュール登録したほうがよいかと思います。

http://support.microsoft.com/kb/313565/ja


2 ● honmahideki
●23ポイント

これでどうでしょう。

public class MainClass {

public static void main(String[] args) {

while(true) {

try{

Thread.sleep(10000);

SubClass subClass = new SubClass();

new Thread(subClass).start();

} catch(Exception e) {

e.printStackTrace();

}

}

}

}

class SubClass implements Runnable {

public void run() {

// 5分おきに実行したい処理

System.out.println("5分たちました。");

}

}


3 ● a-kuma3
●22ポイント

java で組むとしたら、そのプロセスはずーっと動いてなきゃいけない。

実行し続ける処理の内容にもよるけれど、予期せぬ例外 (例えば、OutOfMemoryError) が出るとプロセスが止まってしまうので、それ以降、一度も実行されなくなってしまう。


たとえ、エラーで正しく実行できなかった時間帯があっても、それ以降の動作を期待したいなら cron を使った方が良いと思う。


Windows なら、at コマンドで、というのは、No.1 の回答の通り。

1分に一度実行、だと、登録が激しく面倒なのだけれど。


4 ● Banias
●22ポイント ベストアンサー

下記URLのような手法で大丈夫でしょうか?

大丈夫といえば大丈夫ですが、Java仮想マシンを走り続けるためにリソースを浪費することになります。

お気づきのように、cronを使ってスケジューリングはOSに任せるのが定石です。


Windowsでしたらタスク・スケジューラを使います。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ