kap*_*kap 2 java arraylist thread-safety
我在ArrayList中需要帮助.我有一个字符串的arraylist.我循环遍历此列表并将它们一个接一个地发送到输出流.当我循环遍历列表并发送它们时,另一个线程可能会向其添加一些元素.发送元素后,也必须从列表中删除它.
我怎样才能成功实现这一目标?
如果将项目添加到列表的末尾,则最好使用队列.Java5及更高版本中提供了各种线程安全实现,包括ConcurrentLinkedQueue和LinkedBlockingQueue.
一般来说,前者是更好的选择,除非你想要一个有界的阻塞队列,在这种情况下使用后者.
为作业使用正确的数据结构.用一个ConcurrentLinkedQueue.以下是它在javadoc中描述自己的方式:
基于链接节点的无界线程安全队列.此队列对元素FIFO(先进先出)进行排序.队列的头部是队列中最长时间的元素.队列的尾部是队列中最短时间的元素.新元素插入队列的尾部,队列检索操作获取队列头部的元素.当许多线程共享对公共集合的访问权限时,A
ConcurrentLinkedQueue是一个合适的选择.
| 归档时间: |
|
| 查看次数: |
1146 次 |
| 最近记录: |