【发布时间】:2013-10-30 13:23:24
【问题描述】:
我运行一个 java 服务器来支持我正在开发的 android 游戏。服务器接收客户端套接字,打开一个新线程,读取客户端发送的对象并对链表执行操作。
操作包括,如果链表为空,则将新对象添加到链表中。 如果列表不为空,则线程将该对象添加到列表中并返回列表中的不同对象。
if (!check.getName().equals(fighter1.getName())) {
fighter2 = check;
itr.remove();
OutputStream os = clientSocket.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(os);
oos.writeObject(fighter2);
oos.flush();
checkName = false;
}
这是线程的remove部分,adding部分在前面一点,基本上就是list.add(object);
现在,问题是由于该服务器可以运行多个线程,如果 10 个用户同时连接会发生什么情况,这会不会很有可能导致列表出现空指针/其他错误。
我想扩展这个服务器,使其能够同时处理数百个连接,我目前只是用少数 alpha 测试人员对其进行测试。 关于如何尽可能安全地更改数据,您有什么好的想法吗?
【问题讨论】:
-
你的添加和删除需要是原子的吗?
标签: java multithreading thread-safety