【发布时间】:2015-07-07 23:00:52
【问题描述】:
我遇到了一个关于使用计时器打印句子的小问题。我知道扩展 TimerTask 和覆盖 run 方法的过程,但在这里我可以打印一个静态语句。 但就我而言,我必须打印不同时间段的歌曲列表(来自数组)和艺术家列表(来自数组)。
例如我有 3 首歌曲:第一首 3 分钟,第二首 2.5 分钟,第三首 5 分钟。输出应该如下:
艺术家一号的歌曲一正在播放... (3分钟后) 艺术家二的歌曲二正在播放... (2.5 分钟后) 艺术家三的歌曲三正在播放... (5分钟后) 程序停止。
我目前的代码是这样的:
主类:
package test;
import java.util.Timer;
public class Test {
public static void main(String[] args) {
Timer timer = new Timer("Printer");
for(int i = 0 ; i < 3 ; i++) {
Thread t = new Thread();
int dur = t.getDurations()[i];
timer.schedule(t, 0, dur);
}
}
}
类扩展 TimerTask:
package test;
import java.util.TimerTask;
/**
*
* @author GraphPixel
*/
public class Thread extends TimerTask {
String[] song_list = { "Song One", "Song Two", "Song Three" };
String[] artist_list = { "Artist One", "Artist Two", "Artist Three" };
int[] durations = { 2000, 1500, 2500 };
public int[] getDurations() {
return durations;
}
public String[] getSong_list() {
return song_list;
}
public String[] getArtist_list() {
return artist_list;
}
@Override
public void run() {
int i = 0;
System.out.println(song_list[i] + " played by " + artist_list[i]);
i++;
cancel();
}
}
当我运行程序时,我同时打印了所有三个句子,它们之间没有时间差
【问题讨论】: