2017-08-10 7 views
0

私は、javaのjavax.sound.sampledパッケージを使用して、オーディオを記録し再生する簡単なプログラムに取り組んでいます。 Line(TargetDataLine & SourceDataLine)がスレッドセーフであれば、Java 8のリファレンスでは何の言及も見つかりません。これは、書き込みと排他の両方のメソッドがブロックされ、スレッドの中断に応答しないように見える場合に、特に(SourceDataLineを使用して)再生の問題です。javax.sound.sampled multithread-safe

元のスレッドをブロッキングドレインまたは書き込みメソッドから解放するために、別のスレッドからLineインスタンスを閉じることはできますか?

答えて

0

通常、私はSourceDataLineにアクセスするクラスにフラグを立てるだけでアクセスします。ラッピングクラスには、「実行中」と呼ばれるpublic volatile volatileが与えられ、SDLが存在するループはwhile(running)の条件で囲まれます。このアプローチで発生するレイテンシは、書き込まれるバッファのサイズによって異なります。

フラグを追加したい場合があります。しかし、いずれにしても、SDLのwhileループは、これらのフラグを解釈して動作させるうえでの適切なポイントと思われます。

関連する問題