2010-11-20 16 views
1

私は非常に奇妙な問題を抱えています。私は、2次元の "チェス盤"上を動くフィギュアのシミュレーションを構築する作業に取り組んでいます。各図は、Runnableインタフェースを実装するオブジェクトによって表されます。 問題は、私はそうのような別のスレッドで各オブジェクトを実行しようとすることです:何らかの理由で、私はこれをかなり確信しているだけで最初のスレッドstarts.And、run()メソッドについてはJavaで複数のスレッドを実行する

ArrayList<Thread> playerThreads = new ArrayList<Thread>(); 
    ArrayList<Player> players = p.getSpawnedPlayers(); // This method returns all Runnable objects 
    for (Player pl : players) 
     playerThreads.add(new Thread(pl)); 

    for (Thread pt : playerThreads) 
    { 
     pt.run(); 
    } 

プレイヤークラスの次のようになります。

public void run() 
{ 
    System.out.println("Player " + this.hashCode() + " starts moving..."); 
    ... 
} 

私は、単一のobject.Iからの出力を取得doublecheckedとの両方のArrayListオブジェクトの右の数が含まれていることを確認しました。 これはなぜ起こっているのでしょうか?

答えて

9

あなたがpt.run()pt.start()を呼び出す必要がないスレッドを開始します。すべての詳細については、JavaDocを参照してください。

+0

* facepalm *それが正しい方法であることを完全に忘れてしまった.Silly me :) –

+0

答えを受け入れることを忘れないでください。Emil D. –

+0

私のコメントの時点で、私は仮定した質問を掲示しました:) –

関連する問題