我有一个计时器,它每 0.02 秒动作一次。检查条件的操作(如果执行) - 调用 Thread 播放音乐。问题是在播放旋律时,再次检查此条件。结果异常:线程“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();}
}
}
问题是。
创建多个线程?如何为每个条件创建线程(即,很多线程,但我不知道其中有多少会,下班后 - 它会关闭)
坦率地说,它请求观察者模板,如果所有条件都满足 - notify() 线程想要播放歌曲,适用于不同的场合。