每当我使用 :
Sequencer sequencer = MidiSystem.getSequencer();
sequencer.open();
// code....
sequencer.start();
sequencer.close(); //it closes the sequencer immediately with no sound being played
有什么方法可以确保音序器已经播放完声音,然后调用 close(( 方法?我不想使用时间延迟。
如果你使用的是java8,你可以使用CompletableFuture
。它就像javascript的承诺。您可以指定任务完成后要执行的方法。例如:您可以执行以下操作:
CompletableFuture<String> completableFuture
= CompletableFuture.supplyAsync(() -> sequencer.start())
completableFuture.thenApply(s -> sequencer.close())