4

私はJAVAのスレッドの概念にまったく慣れていません。いくつかのコードを試してみましたが、それらは機能していますが、バックグラウンドで何が起こっているのか正確にはわかりません. たとえば、次のコードを書きました。

public class myThreadTest implements Runnable {
  private static void ping(String text, int count) 
                      throws InterruptedException {
    for (int i = 0; i<count; i++) {
      System.out.println("ping "+text+i+"...");
      Thread.sleep(1000);
    }
  }
  public void run() {
    try {
      ping("run ",10);
    } catch (InterruptedException e) {
    }
  }  
  public static void main(String[] args) {
    (new Thread(new myThreadTest())).start();
    try {
      ping("main ", 5);
    } catch (InterruptedException e) {
    }
 }
}

ここで実行されている2つのスレッドがあり、1つはメインから実行され、もう1つはメソッド実行から実行されていますか? 私が得る出力は、main、run、main、run、run、main ...のようなものです。

4

4 に答える 4

2

そのとおりです。メソッドでスレッド IDを出力して、さまざまなスレッドが実行されていることを確認してくださいping()(スレッドに名前を付けることもできます。どのスレッドが何をしているのかを理解できるように、私はそれに従っています)

于 2013-04-06T11:00:46.757 に答える
0

2 つのスレッドがあります。スレッドの 1 つが作成され、メイン ブロックでの呼び出しrunにより、そのメソッドの非同期実行が開始されます。startもう一方のスレッドは、mainメソッド自体を実行しています。

于 2013-05-15T13:46:48.510 に答える