InterruptedException関連の話

InterruptedException関連の話。まだ突っ込んでないツイートもあるので、あとで入れる。
7
torazuka @torazuka

“Threadの割り込みを活用する - プログラマーの脳みそ” http://t.co/ur7YZAoy

2011-12-02 19:36:51
加藤潤一(かとじゅん) @j5ik2o

[java][スレッド][interrupt]わかりやすいよい記事。スレッドさわる人はみんな読んどけよ~ / “Threadの割り込みを活用する - プログラマーの脳みそ” http://t.co/BWVxsPBd

2011-12-02 23:08:28
加藤潤一(かとじゅん) @j5ik2o

割り込みの意図がわからない人もいるんだね。

2011-12-02 23:16:39
YujiSoftware @YujiSoftware

InterruptedException がどういうときに発生するのかを理解していない人は多いような気がします…。 / “Threadの割り込みを活用する - プログラマーの脳みそ” http://t.co/YiNlFJ30

2011-12-02 23:17:22
int128 🐰 @int128

これは読むべき / “Threadの割り込みを活用する - プログラマーの脳みそ” http://t.co/nBOmsEwk

2011-12-02 23:31:30
Takafumi Ikeda @ikeike443

“Threadの割り込みを活用する - プログラマーの脳みそ” http://t.co/sgoHY8cR

2011-12-02 23:31:56
sipadan @sipadan2003

interrupteの理解は重要だが、どちらも間違っているわけではなくケースバイケース、あるいは費用対効果の場合も。 QT @j5ik2o: [java][スレッド][interrupt] スレッドさわる人はみんな読んどけよ~ http://t.co/mU0CA91O

2011-12-02 23:38:36
加藤潤一(かとじゅん) @j5ik2o

Threadの割り込みを活用する - プログラマーの脳みそ http://t.co/aIiw7IMg

2011-12-03 00:27:28
t_yano @t_yano

割り込みフラグについて言及しててわかりやすいいい記事。なんか、これに加えて「InterruptedExceptionをキャッチしたら(割り込みシステムの構造上)必ず何かすべきことがある」ってブログを書きたくなった。 / “Thread…” http://t.co/y0A5AMyI

2011-12-03 00:28:02
都元ダイスケ🍅 @daisuke_m

[Java][スレッド]おおーー。わかりやすい。 / “Threadの割り込みを活用する - プログラマーの脳みそ” http://t.co/zTixtn6p

2011-12-03 12:06:04
Shin Tanimoto / CERO-METAL @cero_t

Thread.sleepの話。「Thread.sleepは指定された時間スリープすることが保証されていない」事とか、「spurious wakeup」とか、その辺りの対策として、sleep後に経過時間を判定して、sleepし直すというお作法はあるよね。

2011-12-03 13:07:49
sipadan @sipadan2003

sleep()やwait()をinterruptするのであって、スレッドをinterruptするのではないです。notify()、notifyAll()でスレッドを再開するのですから。 @j5ik2o インタラプションは、スレッドの中断を意図した振る舞いが妥当…

2011-12-04 00:02:09
sipadan @sipadan2003

@j5ik2o ええ。interruptはスレッドを中断するものではないので、(続)

2011-12-04 00:54:20
sipadan @sipadan2003

@j5ik2o (続)ExecutorService#shutdownNow()にも

2011-12-04 00:55:20
sipadan @sipadan2003

@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
加藤潤一(かとじゅん) @j5ik2o

@sipadan2003 Java並行処理プログラミングのP157に"インタラプトされたスレッドはそれに対して何をしてもいいのです。しかし実際には、キャンセル以外の目的にインタプラションを使うとプログラムの安定性を損ない、大きなアプリケーションは脆弱になりがちです。"は興味深い。

2011-12-04 00:58:31
sipadan @sipadan2003

ええ、そちらがポイントしている元の記事にも多少誤解を招く書き方になっているといえると思います^^ QT @j5ik2o: @sipadan2003 キャンセル以外の目的にインタプラションを使うとプログラムの安定性を損ない、大きなアプリケーションは脆弱になりがちです。"は興味深い。

2011-12-04 01:03:00
sipadan @sipadan2003

@j5ik2o こちらの考えをブログにまとめました。ご笑納くださいませ。 「InterruptedExceptionは何のためにある?」 http://t.co/SrrkmMiD

2011-12-04 03:18:23
なぎせ ゆうき @nagise

@j5ik2o からDで質問きてた。というか技術的な話題なら普通に質問すればいいじゃん

2011-12-04 22:07:50
なぎせ ゆうき @nagise

.@j5ik2o http://t.co/G4KKn5Ib は端的に書かれているのでなんとも言えませんけども「Queueにある要素をすべて処理しなければならない」とか考える以前にそもそもそのQueueって誰か割りこむように作ってるのどうなの?と。

2011-12-04 22:11:37
なぎせ ゆうき @nagise

.@j5ik2o なんかinterrupt()を誰が呼ぶの?って部分を考慮してるのか疑問ですね。割り込みって勝手に起きるもんじゃないわけで。Interrupt()するには対象のThreadのインスタンスを持ってないと始まらない。それができるのは誰?と。

2011-12-04 22:14:29
なぎせ ゆうき @nagise

.@j5ik2o 実際に割り込めるのはThreadPoolExecutor#shutdownNow() みたいなThreadを管理するフレームワーク的なものか、じゃなければ自分のプログラムそのものですよ。

2011-12-04 22:16:37
なぎせ ゆうき @nagise

.@j5ik2o 件のblogにあったLinkedBlockingQueue#takeだってtakeをしてるThreadのインスタンスを対象にinterrupt()しないとInterruptedExceptionって出ないわけで。誰がinterrupt()すんのよ、と。

2011-12-04 22:20:22
なぎせ ゆうき @nagise

.@j5ik2o この「誰がinterrupt()するのか」を無視してInterruptedExceptionを無視するかしないかを議論してもねえ。そもそもInterruptedExceptionをどうしようとinterrupt()しないならどうでもいいでしょ

2011-12-04 22:22:07