Java Class无法看到对静态ArrayList所做的更改

时间:2014-03-02 03:52:27

标签: java multithreading sockets arraylist static

所以我正在制作一个多线程战列舰服务器。在服务器中是一个公共静态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永远不会再次初始化

0 个答案:

没有答案