我想制作一个程序,逐行读取文件,然后将这些行写入另一个文件。我想使用两个单独的线程来解决这个问题。第一个线程读取一行,然后将其传递给另一个线程,后者负责通过消息将该行写入另一个文件。应重复此过程,直到到达文件末尾。
我怎样才能做到这一点?
我想制作一个程序,逐行读取文件,然后将这些行写入另一个文件。我想使用两个单独的线程来解决这个问题。第一个线程读取一行,然后将其传递给另一个线程,后者负责通过消息将该行写入另一个文件。应重复此过程,直到到达文件末尾。
我怎样才能做到这一点?
你想要的是一个生产者-消费者模型。Thread
使用两个对象和一个ArrayBlockingQueue实现这一点并不难。下面是一些启动代码:
// we'll store lines of text here, a maximum of 100 at a time
ArrayBlockingQueue<String> queue = new ArrayBlockingQueue<String>(100);
// code of thread 1 (producer)
public void run() {
while(/* lines still exist in input file */) {
String line = // read a line of text
queue.put(line); // will block if 100 lines are already inserted
}
// insert a termination token in the queue
}
// code of thread 2 (consumer)
public void run() {
while(true) {
String line = queue.take(); // waits if there are no items in the queue
if(/* line is termination token */) break;
// write line to file
}
}
希望这可以帮助。我不能给出完整的代码,如果你自己尝试填补空白会更好。