在Java中运行多个线程

Emi*_*l D 1 java multithreading runnable

我有一个非常奇怪的问题.我正在进行一项任务,包括建立一个在2d"棋盘"上移动的数字模拟.每个图由实现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 Code Online (Sandbox Code Playgroud)

出于某种原因,只有第一个线程开始.我很确定这一点,播放器类的run()方法如下所示:

public void run()
{
    System.out.println( "Player " + this.hashCode() + " starts moving..." );
    ...
}
Run Code Online (Sandbox Code Playgroud)

我只从单个对象获得输出.我进行了双重检查并确保两个ArrayLists都包含正确数量的对象.知道为什么会这样吗?

Rol*_*lig 9

要启动一个线程,你必须调用pt.start(),而不是pt.run().有关所有详细信息,请参阅JavaDoc.