2016-12-28 14 views
-1

私が欲しいものすべてが、私はスレッドを試してみましたが、それはちょうど時間私は複数のメソッドを同時に実行できますか?

public void run() { 
    System.out.println("Running " + threadName); 
    try { 
    for(int i = 4; i > 0; i--) { 
     System.out.println("Thread: " + threadName + ", " + i); 
     // Let the thread sleep for a while. 
     Thread.sleep(50); 
    } 
    }catch (InterruptedException e) { 
    System.out.println("Thread " + threadName + " interrupted."); 
    } 
    System.out.println("Thread " + threadName + " exiting."); 

}で一つの方法を実行するので、私はスレッドを意味するものではありません同時に

を三つの方法またはそれ以上を実行することです

このコードで

は一つの方法は、実行して、別の方法

の実行を待って眠るが、私は何をしたいことは三つの方法を同時に実行することですされます。

は可能ですか?それがどうやってどこから始めることができるのでしょうか?

+5

ご使用のコンピュータに搭載されているCPUの数はいくつですか?それが唯一のものであれば、一度に1つしかできません。それ以外の場合、「スレッド」は実際にあなたの質問に対する正解です。 –

+0

@DavidWallace - シングルコアのシングルCPUマシンであっても、Javaスレッドは複数の同時実行パスをシミュレートするのに非常に有効です。 –

+0

@TedHopp私は同意します。おそらく、私はあまりにも文字通り、質問を解釈しています。 –

答えて

3

スレッドを試したことがあるかもしれませんが、各メソッドが単独で実行されていると正しく試行しなかったようです。このような何かを試してみてください:

public static void someMethod(int i) { 
    String me = Thread.currentThread().getName(); 
    Random r = new Random(); 
    while (i-- >= 0) { 
     System.out.println(me + ": i=" + i); 
     try { 
      // sleep some random time between 50 and 150 ms 
      Thread.sleep(r.nextInt(100) + 50); 
     } catch (InterruptedException e) { 
      System.out.println(me + " interrupted"); 
      return; 
     } 
    } 
    System.out.println(me + " exiting"); 
} 

public static void main(String[] args) { 
    int numThreads = 4; 
    for (int i = 0; i < numThreads; ++i) { 
     new Thread("Thread " + i) { 
      @Override public void run() { someMethod(10); } 
     }.start(); 
    } 
} 

あなたが一緒に混ざって、すべてのスレッドのためにsomeMethodからの出力が表示されます。コードを実行するたびに異なるはずです。

関連する問題