株式会社エスロジカル
株式会社エスロジカル
セキュリティ、Web開発、Unix開発、Go言語

■ Java:TimerTask

技術ドキュメント目次 -> Java -> TimerTask

本技術ドキュメントは、ここしばらくメンテナンスをしておりません。
内容が古くなっている可能性などございますこと、ご理解を頂けますようお願いいたします。


サイフにやさしいSSL証明書
【低価格SSL証明書】弊社運営の低価格SSL証明書販売サイト、翌月末払いなど請求書払いも可能。


◆ はじめに

Java の TimerTask を使用すると、
C言語の SIGALRM のようなことが簡単に実現できるので、結構便利です。

スレッドの知識をほとんど必要としないで、このような効果を実現できるのも、
少々の利点になるかもしれません。

◆ サンプルを動かしてみる

サンプルを見ていただいたほうが話が早いと思いますので、
まずは、下記のソースコードを斜め読みしてみてください。

1枚の .java ファイルの中に、
main() を持っている timer クラスと、
TimerTask を継承した TTクラスについての記述されています。

/*
 * Copyright (C) 2006 Slogical Corporation
 */
import java.io.*;
import java.lang.*;
import java.util.*;

class timer {

  public static void main(String args[]) throws Exception {

    // 起動1秒後に、0.5秒おきに実行
    TT tt = new TT();
    Timer timer = new Timer();
    timer.scheduleAtFixedRate(tt, 1000, 500);

    // 5秒間 sleep する。
    System.out.println("---------- Sleep Start");
    Thread.sleep(5000);
    System.out.println("---------- Sleep End");

    // 何か複雑な処理を行う(僕の環境で約 0.5秒)
    System.out.println("---------- Loop1 Start");
    int ct = 1;
    boolean bool = true;
    while (bool) {
      ct++;
      if (ct > 10000000) { bool = false; }
    }
    System.out.println("---------- Loop1 End");

    // 無限ループして、tt のメンバ変数の値を見て終了
    System.out.println("---------- Loop2 Start");
    while (true) {
        Thread.sleep(100);
        if (tt.ct >= 15) break;
    }
    System.out.println("---------- Loop2 End");

    // 終了
    timer.cancel();
    System.exit(0);
  }

}

class TT extends TimerTask {

  static int ct = 1;

  public void run() {
    System.out.println("Timer " + ct + "! ");
    ct++;
  }

}


上記のソースコードをコンパイルすると、
次の2枚のclassファイルが出来上がります。

TT.class
timer.class


timer を実行すると次のような出力結果が表示されます。

$ java timer
---------- Sleep Start
Timer 1!
Timer 2!
Timer 3!
Timer 4!
Timer 5!
Timer 6!
Timer 7!
Timer 8!
---------- Sleep End
---------- Loop1 Start
Timer 9!
---------- Loop1 End
---------- Loop2 Start
Timer 10!
Timer 11!
Timer 12!
Timer 13!
Timer 14!
---------- Loop2 End
$





■ Java についての他のドキュメント


■ 他のグループのドキュメント

Apache  /  Linux  /  FreeBSD  /  OpenSSL  /  Perl  /  HTTPプロトコル  /  Jakarta Tomcat  /  Java  /  NetBSD  /  Oracle  /  PostgreSQL  /  UNIX の C言語  /  UNIX のコマンド  /  Windows  /  bind  /  システム運用TIPS

アンケートにご協力をお願いいたします。

1. このドキュメントへの評価をご選択ください。
         

2. ご感想をお書きください。