我有一个计时器,它使得每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