[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] JDK1.2でのThread.stopを調べていて



高橋(徹)です。

有名な話かもしれませんが、JDK1.2ではThreadクラスのstop(), suspend(), 
resuem()が
deprecated(今後はなるべく使わない方がいい?)メソッドになっています。
ひと昔前のAppletプログラミングでは、けっこうThread.stop()を使っていましたが
、
それじゃだめなようですね。
JDK1.2のドキュメント(guide/misc/の中)にも説明がありました。そのサンプルコ
ードで

private volatile Thread blinker;
:
public void run() {
  Thread thisThread = Thread.currentThread();      // ここの行がなぜ必要?
  while(blinker == thisThread) {
     // 別スレッドの処理
  }
}
:
public void stop() {
  blinker = null;
}

別スレッドの処理を終えるときにblinkerをnullにすればrun()が終わるのは分るの
ですが、
run()メソッドの最初の行でなぜcurrentThread()を取得してblinkerと比較させてい
るのか
分かりませんでした。自分で書くなら、
  while(blinker != null) {
と書いてしまいますが。

#次回読書会は、ちょうどスレッドの話題ですね。
#ですが、今月(3月:March)はおりしも「デス・マーチ」・・・


------
Toru Takahashi
torutk@xxxxxxxxxx
NIFTY: GHE00470
http://www.alles.or.jp/~torutk/