2011-01-10 3 views
0

저는 Jlayer를 사용하여 Java에서 mp3 노래를 재생할 때 한 번에 한 스레드 씩 문제가되는 문제에 대한 솔루션을 사용했습니다. 그러나 Kaleb Brasee의이 솔루션은 플레이어를 어떻게 멈출 수 있는지, 즉 어떻게 player.close()를 호출 할 수 있었는지에 대해 암시하지 않았습니까?현재 재생중인 노래를 멈추는 방법 JLayer로 하나의 스레드를 사용할 때?

Executor executor = Executors.newSingleThreadExecutor(); 
executor.execute(new Runnable() { public void run() { 
/* do something */ 
} }); 

이 내가 실행에 넣어 코드()

if(player != null) player.close(); 

try{ 
player = new Player(new FileInputStream(musicD.getPath())); 
player.play(); 
}catch(Exception e){} 

문제는이 정도는 동안 GUI가 활성 유지의 문제를 해결하는 것이입니다 :

Kaleb의 코드였다 음악을 재생합니다 (단 하나의 다른 스레드에서 - 내가 원하는 것). 다른 노래를 재생할 수 없습니다 .-(

무엇을 할 수 있습니까?

답변

0

글쎄, 코드를 수정 한 후에, 현재 스레드를 대체하면 문제가 해결된다는 것을 깨달았습니다. 이전 곡이 아직 완성되지 않은 경우에도 다른 곡을 연주 할 수 있습니다.

이 새로운 코드 :

집행자의 유언 집행; // 당신이 노래를 재생하려면이 모든 시간을하는 클래스 멤버

단순히
따라서 당신이 다른

의 진행에 관계없이 다른 곡을 연주 할 수 있도록 기존 노래의 스레드를 대체 executor = Executors.newSingleThreadExecutor();
executor.execute (new Runnable() {public void run() {
/* 무언가 수행 */
}});