Java:TimerTask
技術ドキュメント目次 -> Java -> TimerTask本技術ドキュメントは、2002~2004年頃に作成したものが多いです。
内容が古くなっていることもあるかと思いますが、ご了承ください。
【低価格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