我有一個計時器,它使得每0.02秒的動作。 檢查條件的操作,如果執行 - 請致電Thread來播放音樂。 問題是,當旋律正在播放時,這個條件再次被檢查。在結果例外: 異常在線程 「AWT-EventQueue的-0」 java.util.ConcurrentModificationExceptionJava中的線程。 「AWT-EventQueue-0」java.util.ConcurrentModificationException
- Background.java
....
Thread eventMusic = new Thread(new EventMusic());
... check different conditions ... (every 0.02s)
if everything is ok -> eventMusic.start();
- EventMusic.java
package Shooter2Dv23082013;
import javazoom.jl.decoder.JavaLayerException;
import javazoom.jl.player.Player;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
public class EventMusic implements Runnable{
@Override
public void run() {
try {
Player p = new Player(new FileInputStream(getClass().getClassLoader().getResource("res/nameSong.mp3").getPath()));
p.play();
} catch (JavaLayerException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();}
}
}
問題是。
創建多個線程?如何創建每個條件的線程(即,很多線程,但我不知道它們會有多少,下班後它將關閉)
坦白地說,它會引起觀察者模板,如果所有條件都是met - notify()要播放歌曲的線程,適用於不同的場合。
我找到了解決方案,它是 - 使用ExecutorService,我認爲你的解決方案不會更糟 – Eldar