- - PR -
クラスの破棄方法について
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-01-27 11:51
はじめまして。
現在、Threadクラスを使ったプログラムを作成しています。 Threadクラスの中で他のPCに接続に行ったりしているのですが、 たまに処理が戻ってこない場合があります。 この時に、タイムアウトの時間を設定しておいて、その時間内に処理が 戻ってこない場合に、Threadクラスを破棄したいと考えています。 要はC言語のTerminateThreadみたいなことができればいいのですが。 どなたかご存知の方がいらっしゃいましたら、ご回答よろしくお願いします。 | ||||||||
|
投稿日時: 2005-01-27 12:33
私もスレッドプログラミングに詳しいわけではないですが
Thread#destroy()というメソッドがあります。 しかしながら、どうやらJDK5.0から非推奨になっているよう なので使わない方が良いでしょう。 Threadの中でTimeoutを検知させてreturnさせるとかで良いのでは? | ||||||||
|
投稿日時: 2005-01-27 12:50
本スレッドで時限付きのwaitに入って、別スレッドで他PCに接続して待ち。無事に処理が戻ってきたら本スレッド(が入っているウェイトセット)にnotifyAll。 起きた本スレッドはwaitが切れたのかnotifyされたのか分からないので、結果がしかるべきところに格納されているかを判定して、しかるべき処理を行う(タイムアウトしましたor処理結果表示or...etc)。 ……とかいうイメージでいかがでしょうか?これなら実装はさほど複雑にならないと思います。 詳しくは結城さんのマルチスレッド本 http://www.amazon.co.jp/exec/obidos/ASIN/4797319127 などをご覧になるとよいかも知れません。 | ||||||||
|
投稿日時: 2005-01-27 16:18
JRE 1.3 以上で可なら、java.util.Timerクラスを使えば簡単かも。
使用方法は、まずjava.util.TimerTaskを継承したクラスを定義、
コンストラクタ引数として監視対象のスレッドインスタンスを渡すようにしておきます。 次に実際にタイマー機能を付加する方法は、、、
例外(InterruptedException)のキャッチ節での後始末を忘れずに。 | ||||||||
|
投稿日時: 2005-01-31 14:50
(株)ぽちさん、永井和彦さん、takamaroさん、返信ありがとうございます。
とりあえず、takamaroさんの方法で行ないたいと思います。 結果がでましたら、また報告します。 ありがとうございました。 |
1