2

基本的に2つのメソッドを持つクラスがあります。最初のメソッドは文字列(ファイルの名前)とスレッドを取ります:

public static void readFile(String s, Thread t){
    Runnable read = new Runnable() {
      public void run() {
          //SOME CODE



}
        t = new Thread(read);
    t.start();

}

2 番目のメソッドは、ユーザーに入力を求め、その入力を使用していくつかの設定を行うメイン メソッドです (スレッドの数が 1 つだけの場合や、リスト内のオブジェクトの数と等しい場合など)。

public static void main(String[] args){
  //SOME CODE

  for(Object x: ListOfObjects){
  //t1 is the same thread each time if one thread requested, otherwise t1 is a different thread each time
  readFromFile(textFileString, t1);
  //SOME CODE
}

ユーザーが (リスト内の 5 つの項目に対して) 5 つのスレッドを要求した場合、そのために上記をどのように変更できますか? 現在、メイン メソッドにはループ (リスト内の項目数) があり、ループ内の反復ごとに最初のメソッドが呼び出されます。ユーザーが要求したスレッドの数を取得し、一度に 1 つずつメソッドを呼び出すのではなく、最初のメソッドでそれらを一度に開始/開始する方法はありますか?

4

1 に答える 1

0

Runnable インターフェースを実装します。私はこれを試しましたが、うまくいくようです:

class StringThread implements Runnable
{
    private String str;
    private int num;

    StringThread(String s, int n)
    {
        str  = new String (s);
        num =n; 
    }

    public void run ( )
    {
        for (int i=1; i<=num; i++)
            System.out.print ("THREAD NAMED: " + str+"  I IS: " +
                                               i + "\n"); 
    }
}

//IN the main program:

StringThread t1 = new StringThread ("THR-1",100);
new Thread(t1). start ( );    
StringThread t2 = new StringThread ("THR-2",200);
new Thread(t2). start ( );   
于 2012-04-30T22:03:18.070 に答える