- Java入門・初心者質問スレ Part.9
696 :デフォルトの名無しさん[]:2020/03/24(火) 07:48:09.82 ID:XYP68GGL - 音を鳴らした時デーモンスレッドが消えないという現象に悩んでいます。
これが問題のクラスです。 https://ideone.com/r0mbjJ .wavファイルはどれも「チャリン」とか「ピポッ」みたいな1、2秒の短いファイルです。 オーディオクリップを再生する時は Direct Clip というデーモンスレッドが立ち上がります。 デバッガでトレースしてみたところ、 new Chime().play(0); とやると、43行目の clip.open(ais[type]); の部分で Direct Clip が立ち上がり、Eclipse のデバッグビューに現れます。 そして70行目の clip.close(); が実行されると消滅します。 ところが、数十回に1度くらいの頻度で、このデーモンスレッドが消えません。 デーモン・スレッド [Direct Clip] (実行中) という表示がデバッグビューにずっと残って、だんだんと増えていきます。 close文が実行されていないのかと思ってprint文を入れてみましたが、 問題が発生した時もちゃんと open start stop close と表示されています。頻度が小さいこともあって、どういう条件の時に起きるか特定できていません。 コードを見てここがおかしいというというところがあるでしょうか?
|
- Java入門・初心者質問スレ Part.9
717 :696[]:2020/03/24(火) 19:02:41.61 ID:XYP68GGL - いまだに原因不明ですが、0.5秒ごとに new chime().play(n); (n は 0 - 2) を500回繰り返すというプログラムにしたら、
時々プログラムが1秒くらい止まってその後 Direct Clip が増えるという現象が見られました。 これって何か関係ありますかね?
|
- Java入門・初心者質問スレ Part.9
724 :696[]:2020/03/24(火) 19:43:55.33 ID:XYP68GGL - >>719
色々試してみても変わらないです。 つけられるメソッド全部に synchronized をつけたら全く Direct Clip が消えなくなりました。
|