Question

J'ai un problème très bizarre. Je travaille sur une mission qui implique de construire une simulation de chiffres se déplaçant sur un "échec" 2D. Chaque figure est représentée par un objet implémentant l'interface Runnable. Le problème est que lorsque j'essaie d'exécuter chaque objet dans un fil différent comme tel:

    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();
    }

Pour une raison quelconque, seul le premier fil commence. Et je suis à peu près certain de cela, la méthode Run () de la classe Player ressemble à ceci:

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

Je ne reçois que la sortie d'un seul objet.Je doublé et je me suis assuré que les deux listes d'arraises contiennent le bon nombre d'objets. Une idée pourquoi cela se produit?

Était-ce utile?

La solution

Pour démarrer un fil, vous devez appeler pt.start(), ne pas pt.run(). Voir le Javadoc pour tous les détails.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top