支持有几个线程运行查询任务,每个线程都会返回一个list
结果,哪种数据结构可以更快地合并结果?
基于链接节点的无界线程安全队列。此队列对元素进行 FIFO(先进先出)排序。队列的头部是在队列中时间最长的元素。队列的尾部是在队列中时间最短的元素。新元素被插入到队列的尾部,队列检索操作获取队列头部的元素。当许多线程将共享对公共集合的访问时,ConcurrentLinkedQueue 是一个合适的选择。与大多数其他并发集合实现一样,此类不允许使用空元素。 此实现采用了一种高效的“无等待”算法,该算法基于简单、快速和实用的非阻塞和阻塞并发队列算法中描述的算法由 Maged M. Michael 和 Michael L. Scott 撰写。
顾名思义,CopyOnWriteArrayList 使用每个突变操作(例如添加或设置)创建底层 ArrayList 的副本。通常 CopyOnWriteArrayList 非常昂贵,因为它涉及每次写入操作的昂贵 Array 复制,但如果您有一个迭代次数超过突变的列表,例如您主要需要迭代 ArrayList 并且不要经常修改它,那么它非常有效。