0

いくつかの非常に大きな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スレッドで?

4

1 に答える 1

3

構成可能なスレッドのプールが必要なようです。各ファイル読み取り操作は、そのプールに送信されるジョブです。

ユーザーが使用するスレッド数を指定したら、プールを適切に構成し、一連のファイル読み取りジョブを送信して、プールに実行を分類させます。

Java の世界では、Executors.newFixedThreadPoolファクトリ メソッドを使用し、各ジョブをCallableとして送信します。Java スレッド プーリングに関するIBM の記事を次に示します。

于 2012-05-01T11:00:42.227 に答える