Потеряйте команду Thread.sleep
.
Это все, что вам нужно сделать. Clip
будет воспроизводиться в своей собственной теме автоматически. При воспроизведении клипы получают свои собственные статусные темы "daemon". Пока ваша программа работает, поток демона будет продолжать выполняться. Потоки демона используются с Clips и SourceDataLines, так что незавершенный звук не будет препятствовать завершению программы после завершения всех обычных потоков.
Кроме того, вы должны загружать Clip
во время запуска, а не только перед его запуском. , Клипы предназначены для предварительной загрузки и сохранения в памяти для использования по мере необходимости. Таким образом, сохраните загруженный клип как переменную уровня класса / переменную экземпляра. Это обычная практика.