1

正確に 2 つのクラスを作成する必要があります。main メソッドを含む Main と、もう 1 つ、行列乗算を実装する Class1 としましょう。Class1 でファイルからデータを読み取り、スレッドを使用して行列の乗算を実行する必要があります。

複数のインスタンスを作成してコンストラクターにパラメーターを渡すことができることはわかっていますが、必要なのは Class1 のインスタンスを 1 つ作成し、ファイルを 1 回読み取り、計算の一部を複数のスレッドで実行することです。

これは正しくありませんが、パラメーターを指定して run メソッドを渡す必要があります。

public class Main {
    public static void main(String[] args) {

        Class1 c = new Class1();

        ArrayList <Thread> a = new ArrayList<>();

        for (int i = 0; i < 4; i++) {
            a.add(i, new Thread(c));
        }

        for (int i = 0; i < 4; i++) {
            a.get(i).start(index1,index2);
        }
    }
}
4

2 に答える 2

0

コンストラクターのパラメーターをスレッド オブジェクトに渡す必要があります。

public class MyThread implements Runnable {

   public MyThread(Object parameter) {
       // store parameter for later user
   }

   public void run() {
   }
}

次のように呼び出します。

Runnable r = new MyThread(param_value);
new Thread(r).start();

あなたの状況では、次のようなコンストラクタを作成する必要があります

public MyThread(int x, int y){
// store parameter for later user
}

https://stackoverflow.com/a/877113/1002790

于 2013-06-09T13:43:34.973 に答える
0

Java で新しいスレッドを生成するには、start()メソッドをオーバーライドしますが、メソッドを呼び出す必要がありますrun()

これにより、次のことを意味します。

class ClassA implements Runnable {
...
}

//Creates new thread
(new ClassA()).start();

//Runs in the current thread:
(new ClassA()).run();

を呼び出すrun()と、現在のスレッドでコードが実行されます。

于 2013-06-09T13:39:01.103 に答える