Многопоточность Java для аудио - PullRequest
0 голосов
/ 19 марта 2020

Я наконец понял, как воспроизводить звук с java, и получил удовольствие от его последствий; однако, когда я захотел создать программу выбора musi c, включающую функциональные кнопки, я понял, что мои методы воспроизведения звука будут конфликтовать с остальной программой. При воспроизведении аудио мне нужно использовать Thread.sleep, который будет иметь ту же длину, что и аудиофайл, но не позволит мне сделать паузу, выбрав другую песню и т. Д. c. Я не полностью завершил основную часть своей программы, как я только начал сегодня. Я искал несколько разных сайтов о многопоточности и проигрывании аудио в Java, но ни один из них не дал мне хорошего способа решения этой проблемы. Я хотел знать, возможно ли создать новый поток, а затем запустить на нем звук одновременно с исходным потоком, и узнать, как получить доступ к одному из другого. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

* * *) Спасибо, 1009 *

PS.

1 Ответ

0 голосов
/ 19 марта 2020

Thread.sleep используется только со звуком в ситуациях, когда необходимо не допустить выхода из программы во время воспроизведения звука. Если ваша программа работает, занимаясь другими делами на время, команда sleep не требуется.

Когда вы проигрываете Clip или SourceDataLine, вызываемый аудио рендеринг запускается сам по себе. нить, но нить является daemon нитью. Поток демона, в отличие от обычных потоков, не будет держать запущенную программу Java открытой.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...