gpt4 book ai didi

java - 添加更多线程会提高程序的性能吗

转载 作者:行者123 更新时间:2023-12-01 17:33:27 25 4
gpt4 key购买 nike

在我的程序中,我有一个 while 循环,它迭代一组图片的数组列表,并对它们进行大量处理以更改它们的外观和图像类型,然后将它们写入磁盘。我的问题是添加多个线程来处理图像或保存图像会加快速度,如果是这样,最好的方法是什么。 ArrayList images = new ArrayList();//超过500张图片 ArrayList 路径 = new 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)));


}

最佳答案

您可以将列表划分为 n 个 block ,以便获得大小为 list/n 的 block ,然后可以让 n 个线程对这些图像“ block ”进行操作。这样您就可以同时完成更多工作。

为了解决提出的一些问题,它很可能也会增加 I/O 并发性,因为在单线程运行中,它会在第一次未命中和阻塞时出错,然后再次出错以读取第二个图像,等等......在多线程方式中,它会一次阻塞 n 个图像,这允许 I/O 调度程序一次处理更多的 I/O(这通常是一件好事)。这意味着即使在单核处理器中也能提高性能,因为 I/O 重叠并且在 I/O 线程阻塞等待时可以有更多线程在核心上运行。

关于java - 添加更多线程会提高程序的性能吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8736916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com