>>807
うちでも、Java 8でCountDownLatch版で new Chime().play(i) を連続で500回呼ぶのを10回ぐらい実行したら一回だけDirect Clipスレッドが一つ残りました。
見てみると、
com.sun.media.sound.DirectAudioDevice$DirectClip.run()
の(コメント込みで)10行目ぐらいの lock.wait() で止まっていました。
この箇所の実装をJava 8とJava 12で比較すると少し修正されています。
Java8 の実装だと
while (thread == curThread) {
で thread == curThread が true と判定した後、
synchronized(lock) { ※
で同期化ブロックに入る前に DirectAudioDevice$DirectClip.thread フィールドが変更されていた場合、
そのまま lock.wait() に突入してしまうタイミングがあるように見えます。
つまり DirectClip.run() が※のモニタを取る前に
DirectAudioDevice$DirectClip.implClose() が DirectClip.thread = null として lock.notifyAll() してしまうと、
DirectClip.run() の lock.wait() は来ない通知 (lockのnotify) を待ち続けることになるのでしょう。
Java12 では DirectClip.run() の synchronized(lock) を取ってすぐに
while (!doIO && thread == curThread) {
で DirectClip.thread フィールドをチェックするようになっているので、
絶妙なタイミングで DirectClip.implClose() に割り込まれても大丈夫なようにライブラリが修正されたのでは無いでしょうか。
リリースノートかbug paradeを丹念にチェックしたら、どこかに載っているかもしれません。
探検
Java入門・初心者質問スレ Part.9
■ このスレッドは過去ログ倉庫に格納されています
808806
2020/03/26(木) 01:21:15.44ID:bOCMBW8V■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 ★4 [蚤の市★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★5 [七波羅探題★]
- 【速報】 米トランプ政権声明 「中国が台湾を奪おうとする、いかなる試みも阻止する」 中国「レッドラインだ」 ★2 [お断り★]
- 元プロ野球選手・堂上隼人(43)を20代女性2人へのわいせつ未遂容疑で8回目の逮捕…これまでの被害者は10代・20代の女性11人に [Anonymous★]
- 「残業キャンセル界隈」若者が増加?「職務放棄」との批判も…“定時退社の権利”どこまで通用するか [七波羅探題★]
- 【高校野球】なぜ『7回制』は反対多数でも止まらないか… 高野連が「全員の命」守るために貫く伝統より改革の姿勢 [冬月記者★]
- 【悲報】地銀や生保 長期金利急上昇で含み損が加速 [358382861]
- 【高市悲報】自衛隊「実は事前に現場海域で中国軍から空母での発着訓練をすると通告がありました」え…?😨😨 [931948549]
- 【速報】旧統一教会会長が辞任 [459590647]
- 【高市速報】中国「このままだと日本が先制攻撃してくる」 [583597859]
- めんどくさくて放置してること
- AI「その画像AIだぞ」AIぼく「そうなんだ助かる」
