所以我正在制作一个多线程战列舰服务器。在服务器中是一个公共静态ArrayList
,它包含正在运行的所有不同线程。首次实例化服务器时,我将第一个线程添加到静态ArrayList
。调试器显示:
myList ArrayList(id = 17)size:1
BattleshipServer temp = new BattleshipServer(32100);
threads.add(temp);
threads.get(threads.size()-1).start();
但是,当客户端尝试连接到该线程时,我得到一个OutOfBoundsException
。
serverSocket = new Socket(
InetAddress.getByName(serverIpStrg),
BattleshipServer
.getThreads()
.get(BattleshipServer.getThreads().size()-1)
.SERVER_PORT
);
客户端的调试器说ArrayList
的大小为:0
发生了什么事?如何让客户端看到服务器的ArrayList
?
编辑:Vector
的初始化(在构造函数之外):
public volatile static Vector<BattleshipServer> threads =
new Vector<BattleshipServer>();
/**
* Creates a new battleship server
*/
public BattleshipServer(int port) {
构造函数去... Vector
永远不会再次初始化