Я установил этот таймер внутри каждого элемента списка. С помощью for l oop я хотел бы выполнять каждое событие таймера каждого элемента на каждой итерации. Однако код выполняется, но таймер, похоже, не работает, все элементы сразу отображаются в списке. В чем причина этого?
Я суммировал код, чтобы включить только самое необходимое.
public class Main {
public static void main(String[] args) {
new Main();
}
public Main() {
playList playList = new playList();
Song song1 = new Song("song 1", "artist 1", 2000);
playList.add(song1);
Song song2 = new Song("song 2", "artist 2", 3000);
playList.add(song2);
Song song3 = new Song("song 3", "artist 3", 3500);
playList.add(song3);
Song song4 = new Song("song 4", "artist 4", 3500);
playList.add(song4);
playList.playThisList();
}
}
class Song {
String title;
String artist;
int duration;
public Song(String title, String artist, int duration) {
this.title = title;
this.artist = artist;
this.duration = duration;
}
public String toString() {
return this.artist + ", " + this.title;
}
Timer timer = new Timer();
TimerTask task = new TimerTask() {
public void run () { stop(); } };
public void play() {
timer.scheduleAtFixedRate(task, duration, duration);
System.out.println("Now Playing");
}
public void stop() {
timer.cancel();
}
}
class playList () {
void playThisList() {
System.out.println("Playlist");
Node node = head;
for (int i = 0; i < count; i++) {
node.song.play();
node = node.next;
}
}
}
Я знаю, что могу использовать Thread.sleep()
, но все же хочу понять, почему это Здесь невозможно использовать таймер, или как я могу его использовать в этом случае?