タイマーが鳴ったときに Java で短いサウンド .wav を再生したい。規定は、私がこれらのタイマーをたくさん持っているということであり、複数のタイマーが同時にまたはほぼ同時にオフになる可能性が非常に高いです。その場合、サウンドを 1 回だけ再生し、他のリクエストをドロップしてサウンドを再生したいと考えています。サウンドを連続して再生したり、そのようなことはしたくありません。
そのようなものをコーディングする方法についての助けをいただければ幸いです。
ReentrantLock
サウンドの再生にインスタンスを使用できます。synchronized
これは、ロックがすぐに使用可能であったかどうかを検出できるため、固有のロック (キーワードを使用) を使用するよりも優れています。そうでない場合は、別のタイマー スレッドが既にサウンドを再生していることを意味し、この要求は無視できます。
final class SoundPlayer {
private final Lock lock = new ReentrantLock();
...
void play(SomeTypeRepresentingTheSound clip) {
if (lock.tryLock()) {
try {
/* Play clip. */
...
} finally {
lock.unlock();
}
}
}
}