InterruptedException関連の話
[java][スレッド][interrupt]わかりやすいよい記事。スレッドさわる人はみんな読んどけよ~ / “Threadの割り込みを活用する - プログラマーの脳みそ” http://t.co/BWVxsPBd
2011-12-02 23:08:28InterruptedException がどういうときに発生するのかを理解していない人は多いような気がします…。 / “Threadの割り込みを活用する - プログラマーの脳みそ” http://t.co/YiNlFJ30
2011-12-02 23:17:22interrupteの理解は重要だが、どちらも間違っているわけではなくケースバイケース、あるいは費用対効果の場合も。 QT @j5ik2o: [java][スレッド][interrupt] スレッドさわる人はみんな読んどけよ~ http://t.co/mU0CA91O
2011-12-02 23:38:36割り込みフラグについて言及しててわかりやすいいい記事。なんか、これに加えて「InterruptedExceptionをキャッチしたら(割り込みシステムの構造上)必ず何かすべきことがある」ってブログを書きたくなった。 / “Thread…” http://t.co/y0A5AMyI
2011-12-03 00:28:02[Java][スレッド]おおーー。わかりやすい。 / “Threadの割り込みを活用する - プログラマーの脳みそ” http://t.co/zTixtn6p
2011-12-03 12:06:04Thread.sleepの話。「Thread.sleepは指定された時間スリープすることが保証されていない」事とか、「spurious wakeup」とか、その辺りの対策として、sleep後に経過時間を判定して、sleepし直すというお作法はあるよね。
2011-12-03 13:07:49sleep()やwait()をinterruptするのであって、スレッドをinterruptするのではないです。notify()、notifyAll()でスレッドを再開するのですから。 @j5ik2o インタラプションは、スレッドの中断を意図した振る舞いが妥当…
2011-12-04 00:02:09@j5ik2o (続) typical implementations will cancel via Thread.interrupt(), so any task that fails to respond to interrupts may never terminate.
2011-12-04 00:55:44@sipadan2003 Java並行処理プログラミングのP157に"インタラプトされたスレッドはそれに対して何をしてもいいのです。しかし実際には、キャンセル以外の目的にインタプラションを使うとプログラムの安定性を損ない、大きなアプリケーションは脆弱になりがちです。"は興味深い。
2011-12-04 00:58:31ええ、そちらがポイントしている元の記事にも多少誤解を招く書き方になっているといえると思います^^ QT @j5ik2o: @sipadan2003 キャンセル以外の目的にインタプラションを使うとプログラムの安定性を損ない、大きなアプリケーションは脆弱になりがちです。"は興味深い。
2011-12-04 01:03:00@j5ik2o こちらの考えをブログにまとめました。ご笑納くださいませ。 「InterruptedExceptionは何のためにある?」 http://t.co/SrrkmMiD
2011-12-04 03:18:23.@j5ik2o http://t.co/G4KKn5Ib は端的に書かれているのでなんとも言えませんけども「Queueにある要素をすべて処理しなければならない」とか考える以前にそもそもそのQueueって誰か割りこむように作ってるのどうなの?と。
2011-12-04 22:11:37.@j5ik2o なんかinterrupt()を誰が呼ぶの?って部分を考慮してるのか疑問ですね。割り込みって勝手に起きるもんじゃないわけで。Interrupt()するには対象のThreadのインスタンスを持ってないと始まらない。それができるのは誰?と。
2011-12-04 22:14:29.@j5ik2o 実際に割り込めるのはThreadPoolExecutor#shutdownNow() みたいなThreadを管理するフレームワーク的なものか、じゃなければ自分のプログラムそのものですよ。
2011-12-04 22:16:37.@j5ik2o 件のblogにあったLinkedBlockingQueue#takeだってtakeをしてるThreadのインスタンスを対象にinterrupt()しないとInterruptedExceptionって出ないわけで。誰がinterrupt()すんのよ、と。
2011-12-04 22:20:22.@j5ik2o この「誰がinterrupt()するのか」を無視してInterruptedExceptionを無視するかしないかを議論してもねえ。そもそもInterruptedExceptionをどうしようとinterrupt()しないならどうでもいいでしょ
2011-12-04 22:22:07