如何创建一个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)));
}
答案 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))));
}