【发布时间】:2014-07-08 12:10:35
【问题描述】:
我使用JDK5,操作系统为Windows7,内存为6gb,双核处理器
我有一个包含 5000 条记录的数组列表,它的大小最终会增加。
由于这个 ArrayList 可以包含大量数据,所以如果我将列表分为两部分并在 java 并发包的 FututreTask 的帮助下生成两个线程 T1 和 T2,这将是一个好方法,所以线程(T1 和 T2)可以并行迭代这个 ArrayList 并更快地完成它。
请提供建议,因为我无法就实现 FutureTask 以迭代 Arraylist 得出结论。
【问题讨论】:
-
增加什么? 5000 个对象并不是很多(当然取决于对象)。 50000 个对象仍然不是很多(仍然取决于对象)。您需要更具体地了解您将要处理的内容,然后人们才能就如何处理它向您提供架构建议。
-
BlockingDeque是在 java 中实现多线程工作者模式的一种简单而有效的方法。每个线程在准备就绪时从队列中读取一项工作并进行处理。 -
没有具体限制,我的意思是我从返回大量数据的数据库中获取记录并将其存储在 Arraylist 中。现在,当我尝试遍历此列表时,它需要 10 多秒,因为它返回了许多字段。
-
很遗憾不能使用 JDK8,这正是流 API 的设计目的。事实上,sourceforge.net/projects/streamsupport 这会有所帮助吗?
-
跳入多线程有点危险,除非您了解它将如何帮助您,否则您不应该这样做。在上述情况下,可能没有太多收获。当您有大量通信或“磁盘”I/O 时更有用。
标签: java multithreading arraylist