我正在做下周要完成的家庭作业。我们应该有三个线程。第一个文本从文本文件中读取文本,下一个文本反转每个其他单词,并且在反转中不包括标点符号,最后一个线程从队列中获取反转的单词并将它们写回新的文本文件。
BlockingQueues只能是长度2.我已成功读取文件并反转了这些单词。但是我在写入文本文件时遇到问题。到目前为止,它只写了第一个字。 这是最终输出线程的run方法中的代码。我不知道如何让线程写入当前队列中的两个单词,然后停止并等待队列填充来自其他线程的新反转单词
public void run() {
while(true){
try {
FileWriter writer = new FileWriter(file);
try {
writer.write(out.take() + " ");
} catch (InterruptedException ex) {
Logger.getLogger(outputClass.class.getName()).log(Level.SEVERE, null, ex);
}
writer.close();
} catch (IOException ex) {
Logger.getLogger(outputClass.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
答案 0 :(得分:0)
在尝试写入数据之前,您需要检查队列中是否存在数据。如果没有,你可以使用Thread.sleep()来屈服于其他线程,然后在线程唤醒时再次尝试,或者你可以创建一个等待条件,让其他线程在写入数据时通知等待。