[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends] Re: Thread#interrupt()
下村です。
shin> 例えばあるThreadがServerSocket#accept()を呼び出して
shin> ブロックしているときに、サーバプログラム自体を終了させたくて
shin> 別ThreadからブロックしているThreadを終わらせようとしても
shin> Thread#stop()以外でスマートに終わらせる方法が思い浮かびません.
僕は対戦型ネットワークゲームを作るためにソケットまわりを
いじっているのですが、僕のやった限りでは Thread#stop() を
使っても止まりませんでした。
(もちろん、accept() から処理が帰ってきた時点で ThreadDeath が
発生しますが)
不思議なことに、スレッドが停止していないのに join() が
帰ってきちゃうんです。これじゃ使い物になりません。
結局、ServerSocket#close() を外部スレッドに呼ばせて
SocketException を catch する方法で解決しました。
shin> Thread#stop()はご存じの通りJDK1.2でdeprecatedになっています.
それは知りませんでした。どうりで interrupt() が必要なわけですね。
=== == = TACT/下村哲人 神奈川県横浜市 = == ===
=== == = E-mail: tact@xxxxxxxxxx = == ===