私はタイマーを持っています.0.02秒ごとに動作します。条件が実行されているかどうかをチェックするアクション - 音楽を再生するために Thread を呼び出します。問題は、メロディーが再生されている間、この条件が再度チェックされることです。In result Exception: Exception in 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();}
}
}
質問は。
複数のスレッドを作成しますか? 条件ごとにスレッドを作成する方法 (つまり、たくさんのスレッドがありますが、作業後にスレッドがいくつになるかわかりません - 閉じられます)
率直に言って、すべての条件が満たされている場合、オブザーバー テンプレートを要求します - さまざまな機会に曲を再生したい通知 () スレッド。