小编pas*_*nte的帖子

用于get-size-and-delete-element模式的Java线程安全集合

我有一个在多个线程之间共享的字符串列表.每个线程必须:

  1. 访问列表(例如通过getter方法);
  2. 得到列表的大小;
  3. 选择零和list.size()之间的随机数n;
  4. 从列表中提取偏移量为n的元素;
  5. 从列表中删除提取的元素;
  6. "保存"列表,以便其他线程始终查看更新的列表

由于存在对可变共享对象(列表)的并发访问,因此我需要以线程安全的方式进行编码.每个线程必须将列表大小减少一个,因此每个其他线程访问必须看到一个较短的列表.我的目标是避免线程可以看到另一个线程看到的相同列表,因为这样可能会提取相同的元素两次.

这是实现这一目标的最佳方法?我正在考虑CopyOnWriteArrayList,但我不确定它的行为就像我需要的那样.

谢谢

java collections concurrency multithreading

2
推荐指数
1
解决办法
917
查看次数

标签 统计

collections ×1

concurrency ×1

java ×1

multithreading ×1