我不确定我是否理解 Java 中的同步列表。假设我有以下内容:
List<Integer> numbers = Collections.synchronizedList(new ArrayList<Integer>());
// Assumption: This is running on a separate thread
public void add() {
numbers.add(new Random().nextInt(100));
}
// This is also running on a separate thread
public void doSomething() {
synchronized(numbers) {
for (int i : numbers) {}
}
}
基本上,如果被调用,add()
是否能够将数字添加到列表中?doSomething()
如果我改为使用public synchronized void add()
and会发生什么public synchronized void doSomething()
?
我正在开发一个 UDP 套接字服务器,我打算将客户端存储在一个ArrayList
. 我将有多个线程可以读取、写入和修改此列表。我应该做什么?