Если вы хотите, чтобы программа запускала два отдельных потока одновременно, взгляните на Concurrency / Threads.Пример:
class PlayerThread extends Thread {
private final Player player;
PlayerThread(Player player) {
this.player = player;
}
public void run() {
try {
player.play();
} catch (JavaLayerException e) {
e.printStackTrace();
}
}
}
class Main {
public static void main(String[] args) throws InterruptedException {
String filename = "*filename*";
try (FileInputStream fileInputStream = new FileInputStream(filename)) {
// load the file
Player player = new Player(fileInputStream);
// start playing music in separate thread
new PlayerThread(player).start();
// wait until you want to stop the music,
// or do something else, maybe wait for user's decision
Thread.sleep(10_000); // 10 seconds
// close the player
player.close();
} catch (JavaLayerException | IOException e) {
e.printStackTrace();
}
}
, таким образом, один поток запускает музыку, в то время как вы можете взаимодействовать с другим и давать команды.Имейте в виду, параллелизм - это большая и сложная тема, если вы никогда ее не используете, у вас могут возникнуть проблемы.Изучите учебник:
https://docs.oracle.com/javase/tutorial/essential/concurrency/index.html https://docs.oracle.com/javase/tutorial/essential/concurrency/runthread.html