1

複数のスレッドを作成する関数があります。スレッドごとに、コンストラクターが異なるクラスからオブジェクトを取得するため、最初にこのクラスのオブジェクトを作成してから、スレッドを作成する必要があります。コードの下(例を簡略化するために変更)

public static void createThread (int n) {
      for(int i=0;i<n;i++){
         someClass obj=new someClass(i);
         ThreadClass myThread=new ThreadClass(obj);
         myThread.run();
        }

ここでの問題は、スレッドがランダムに実行されていることを実際には確認していないことです。run()でそれぞれを印刷していますが、順番に表示されていることがわかります。これに何か問題がありますか?別の方法で実行する必要がありますか?

ありがとう

4

1 に答える 1

9

Thread.start()ではなく使用しThread.run()ます。メソッドを使用するrunと、同じスレッドでそのメソッドを呼び出すだけですが、startメソッドは実際に新しいスレッドを作成し、runそのスレッド内でメソッドを呼び出します。

「ランダムに」とは、実際にはインターリーブを意味すると思います。これはその結果につながるはずです。

于 2012-12-25T20:53:31.427 に答える