0

ファイルを 1 行ずつ読み取り、それらの行を別のファイルに書き込むプログラムを作成したいと考えています。2 つの別々のスレッドを使用してこの問題を解決したいと考えています。最初のスレッドは行を読み取り、メッセージを介してその行を別のファイルに書き込む責任がある他のスレッドに渡します。ファイルの終わりに到達するまで、このプロセスを繰り返す必要があります。

これどうやってするの?

4

1 に答える 1

4

あなたが望むのは生産者と消費者のモデルです。Thread2 つのオブジェクトと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
   }   
}

お役に立てれば。完全なコードを提供することはできません。自分でギャップを埋めようとする方がよいでしょう。

于 2012-06-04T07:43:29.967 に答える