私が投稿した私の以前の質問について:
いくつかの非常に大きなtxtファイルを読み取る必要があり、ユーザーの入力に応じて、複数のスレッドまたは単一のスレッドを使用する必要があります。ユーザー入力を取得するメイン メソッドがあり、ユーザーが 1 つのスレッドを要求し、そのスレッドの 20 個の txt ファイルを処理したいとします。どうすればこれを達成できますか? 以下は私のコードやその設定ではなく、単なる「アイデア」であることに注意してください。
例:
int numFiles = 20;
int threads = 1;
String[] list = new String[20];
for(int i = 1; i < 21; i++){
list[i] = "hello" + i + ".txt";//so the list is a hello1.txt, hello2.txt, ..., hello20.txt
}
public void run(){
//processes txt file
}
要約すると、単一のスレッドでこれを達成するにはどうすればよいでしょうか? 20スレッドで?
そして、ユーザーはthreadPoolsの使用を提案しました:
ユーザーが使用するスレッド数を指定したら、プールを適切に構成し、一連のファイル読み取りジョブを送信して、プールに実行を分類させます。Java の世界では、Executors.newFixedThreadPool ファクトリ メソッドを使用し、各ジョブを Callable として送信します。Java スレッド プーリングに関する IBM の記事を次に示します。
これで、txt ファイル名を取り込んで処理を行う sortAndMap(String x) というメソッドができました。上記の例では、次のようになります。
Executors.newFixedThreadPool(numThreads);
上記の例が実行可能になるように、これを threadPools で使用するにはどうすればよいですか?