- PR -

スレッドの動作について

1
投稿者投稿内容
かにかに
会議室デビュー日: 2005/03/23
投稿数: 18
投稿日時: 2005-09-14 09:57
お世話になります。

JAVAのスレッドについてご教示いただけるでしょうか?
以下のように、メインのスレッドと、そこから生成されるサブのスレッドがあるとします。


「MainThread.java」
--------------------------------------------------------------------------------
public class MainThread {
public static void main(String[] args) {
System.out.println("Main Thread Start!");
Thread th = new Thread(new SubThread());
th.run();
System.out.println("Main Thread End!");
}
}
--------------------------------------------------------------------------------



「SubThread.java」
--------------------------------------------------------------------------------
public class SubThread implements Runnable {
public void run() {
System.out.println("Sub Thread Start!");
try {
Thread.sleep(5000); // 5秒間停止
} catch (Exception e) {}
System.out.println("Sub Thread End!");
}
}
--------------------------------------------------------------------------------



これを実行すると、以下のようになりました。

Main Thread Start!
Sub Thread Start!

〜 5秒経過後 〜

Sub Thread End!
Main Thread End!



しかし、本当は以下のような結果にしたいのです。

Main Thread Start!
Sub Thread Start!
Main Thread End!

〜 5秒経過後 〜

Sub Thread End!



つまり、メインのスレッドは別のサブスレッドを立ち上げた後にサブスレッドの終了を待たずに終了し、サブスレッドは自分の処理を終わらせてから終了する、という処理を行いたいのです。
上記のようなことが実現できれば、必ずしも Thread を使用することにこだわりはありません。


当方の実行環境は
Windows XP
J2SE 1.4.2_08
です。
また、簡単に説明するためにコンソールで動作するJAVAプログラムとして記述しましたが、実際は Tomcat 4.1 で動作するサーブレットを考えています。


良い方法をご存知の方がいらっしゃいましたら、アドバイスをお願いいたします。
びしばし
大ベテラン
会議室デビュー日: 2002/03/13
投稿数: 181
投稿日時: 2005-09-14 10:09
th.run(); ではなく th.start(); にしてください。
かにかに
会議室デビュー日: 2005/03/23
投稿数: 18
投稿日時: 2005-09-14 10:13
びしばし さん

ありがとうございます。
それだけの修正で解決しました!
1

スキルアップ/キャリアアップ(JOB@IT)