在循环中创建多个线程

时间:2013-07-11 18:58:03

标签: java multithreading

如何创建一个for循环,创建可识别的多个线程。游戏中的线程为Players,需要相互通信。我需要能够访问每个玩家的getter和setter。

基本上,每个Player都有一个名称属性,需要可识别。如果我这样做,我看不出它们是如何彼此识别的......

for (int i = 0; i < numberOfPlayers; i++)
    {
        Thread t = new Thread(new Player("Player" + (i + 1), (i + 1), (i + 2)));
    }

2 个答案:

答案 0 :(得分:2)

一种选择是创建Map个玩家,并将此Map传递给每个Player,以便他们可以直接相互沟通(或制作地图{{1}这样它对所有static个对象都可见,或者其他什么)

Player

另一种选择是创建一个充当消息总线的类,可以访问所有玩家的设置者 - 如果玩家想要向另一个玩家发送消息,那么它将消息发送到消息总线,然后消息总线负责调用适当的setter方法

答案 1 :(得分:1)

如果你知道numberOfPlayers然后创建一个Thread数组,并在循环中填充它:

Thread[] players = new Thread[numberOfPlayers];

for (int i = 0; i < numberOfPlayers; i++) {
    players[i] = new Thread(new Player("Player" + (i + 1), (i + 1), (i + 2)));
    // You can start the thread here only
}

但是如果您事先不知道numberOfPlayers,那么在创建数组时,您可以创建ArrayList<Thread>并将每个新线程添加到其中:

List<Thread> players = new ArrayList<Thread>();

for (int i = 0; i < numberOfPlayers; i++) {
    players.add(new Thread(new Player("Player" + (i + 1), (i + 1), (i + 2))));
}