【发布时间】:2012-01-05 02:32:52
【问题描述】:
在我的程序中,我有一个 while 循环,它遍历一组图片的数组列表,并对它们进行一系列处理以更改它们的外观和图像类型,然后将它们写入磁盘。我的问题是添加多个线程来处理图像或保存图像会加快速度,如果是这样,最好的方法是什么。 ArrayList images = new ArrayList();//超过500张图片 ArrayList 路径 = 新的 ArrayList (); int len = images.size();
for (int i =0; i < len ; i ++)
{
BufferedImage image = process (images.get(i))//takes about a second
ImageIO.write(image, "jpg", new File(getImagePaths().get(i)));
}
【问题讨论】:
-
您尝试改进的代码示例将增加社区提供帮助的几率。 :) 根据您的描述,它可能是磁盘 I/O,在这种情况下,多线程可能无济于事。您是否尝试过分析您的应用以确定性能瓶颈在哪里?
-
假设您的进程受 CPU 限制,我会使用
Executors.newFixedThreadPool,它的线程数与您拥有的核心Runtime.availableProcessors()和execute()的线程数相同,每个都作为循环内的任务写入。 -
@GregHewgill 如果我们一直远离它们,那么我们如何学习它们..
标签: java multithreading performance