Java を使用して非常に大きなファイルを読み込もうとしています。その大きなファイルには次のようなデータが含まれます。つまり、各行にユーザー ID があります。
149905320
1165665384
66969324
886633368
1145241312
286585320
1008665352
そして、その大きなファイルには、約 3000 万のユーザー ID が含まれます。今、私はその大きなファイルからすべてのユーザー ID を 1 つずつ読み取ろうとしています。つまり、各ユーザー ID は、その大きなファイルから 1 回だけ選択する必要があります。たとえば、3000 万のユーザー ID がある場合、マルチスレッド コードを使用して 3000 万のユーザー ID を 1 回だけ出力する必要があります。
以下は、10 個のスレッドで実行されるマルチスレッド コードであるコードですが、以下のプログラムでは、各ユーザー ID が 1 回だけ選択されていることを確認できません。
public class ReadingFile {
public static void main(String[] args) {
// create thread pool with given size
ExecutorService service = Executors.newFixedThreadPool(10);
for (int i = 0; i < 10; i++) {
service.submit(new FileTask());
}
}
}
class FileTask implements Runnable {
@Override
public void run() {
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("D:/abc.txt"));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
//do things with line
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
誰でもこれで私を助けることができますか? 私は何を間違っていますか?そして、これを行うための最速の方法は何ですか?