这就是我通常迭代一个集合的方式
for(Iterator iterator = collectionthing.iterator(); iterator.hasNext();){
Run Code Online (Sandbox Code Playgroud)
我相信大多数人这样做,我想知道有没有比顺序迭代更好的方法?有没有任何java库..我可以通过多代码cpu使这个并行执行?=)
期待大家的反馈.
Java的多线程在这方面水平相当低.你能做的最好的是这样的:
ExecutorService executor = Executors.newFixedThreadPool(10);
for (final Object item : collectionThingy) {
executor.submit(new Runnable() {
@Override
public void run() {
// do stuff with item
}
});
}
executor.shutdown();
executor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
Run Code Online (Sandbox Code Playgroud)
这是Java 6代码.如果在Java 5上运行,则删除@Override注释(它不适用于在Java 5中实现接口的对象,但在Java 6中也是如此).
这样做是为集合中的每个项目创建任务.创建一个线程池(大小为10)来运行这些任务).你可以用任何你想要的东西替换它.最后,线程池被关闭,代码块等待所有任务完成.
最后一个至少有一两个例外,你需要抓住.在猜测,InterruptedException和ExecutionException.
| 归档时间: |
|
| 查看次数: |
477 次 |
| 最近记录: |