我遇到了一个非常奇怪的问题。我正在从事一项任务,该任务涉及建立一个模拟在二维“棋盘”上移动的人物。每个图形都由一个实现 Runnable 接口的对象表示。问题是,当我尝试在不同的线程中运行每个对象时,如下所示:
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();
}
由于某种原因,只有第一个线程启动。我很确定,播放器类的 run() 方法如下所示:
public void run()
{
System.out.println( "Player " + this.hashCode() + " starts moving..." );
...
}
我只从单个对象获取输出。我仔细检查并确保两个 ArrayList 都包含正确数量的对象。知道为什么会这样吗?