Thread.sleep
используется только со звуком в ситуациях, когда необходимо не допустить выхода из программы во время воспроизведения звука. Если ваша программа работает, занимаясь другими делами на время, команда sleep не требуется.
Когда вы проигрываете Clip
или SourceDataLine
, вызываемый аудио рендеринг запускается сам по себе. нить, но нить является daemon
нитью. Поток демона, в отличие от обычных потоков, не будет держать запущенную программу Java открытой.
Я не видел остальную часть вашего кода, но хороший способ продемонстрировать это самому себе - создать простая форма с кнопкой. Пусть кнопка запускает звук и НЕ включает никаких команд сна. Пока форма с кнопкой вверх и видна, звук должен воспроизводиться до конца.