トップページ > プログラム > 2020年03月24日 > XYP68GGL

書き込み順位&時間帯一覧

12 位/147 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000100000000000200003



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
696
Java入門・初心者質問スレ Part.9

書き込みレス一覧

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 が消えなくなりました。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。