【发布时间】:2017-09-04 11:08:24
【问题描述】:
我正在尝试创建一种方法,该方法一次打印出一行,之间有两分钟的延迟。我怎么做?。
这部分代码读取一个文本文件(questionsFile)并创建一个ArrayList:
public Broadcaster(Socket connection) throws IOException {
read = new BufferedReader(new InputStreamReader(connection.getInputStream()));
write = new PrintStream(connection.getOutputStream());
List<String> questionsList = new ArrayList<>();
try (Stream<String> questionsStream = Files.lines(Paths.get(questionsFile))) {
questionsList = questionsStream
.parallel()
.collect(Collectors.toList());
} catch (IOException w) {
w.printStackTrace();
}
下面有一个计时器,但由于某种原因,我无法让它工作。整个 ArrayList 被打印出来,没有任何延迟。我的意图是使用 printStream 但出于测试目的,文本当前打印到控制台。如何重写代码以便一次打印一行?
List<String> finalQuestionsList = questionsList;
timer.schedule(task(() -> finalQuestionsList.forEach(System.out::println))
, 120, TimeUnit.SECONDS.toMillis(1));
}
private TimerTask task(Runnable task) {
return new TimerTask() {
@Override
public void run() {
task.run();
【问题讨论】:
-
你有没有调用 timer.start()?计时器设置为重复吗?
-
不是直接的,但我正在使用 ExecutorService 启动该方法,它可以让一切运行。
标签: java arraylist java-8 scheduled-tasks java-threads