mma*_*ian 1 java io multithreading for-loop file
我搜索过类似的问题,但他们没有涉及for循环.我有以下代码:
image = new BufferedImage[maxFiles];
for (int i = 0; i < maxFiles; i++) {
new Thread(){
public void run() {
try {
file = new File("0" + i + ".jpg");
image[i] = ImageIO.read(file);
} catch (IOException e) {e.printStackTrace();}
}
};
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我希望通过自己的线程加载每个图像文件以优化一点.不幸的是,for循环的变量i不能通过run方法传递,我不能使它成为final或static.你怎么解决这个问题?
您可以使用相同值的最终变量.
image = new BufferedImage[maxFiles];
for (int i = 0; i < maxFiles; i++) {
final int index = i;
new Thread(){
public void run() {
try {
file = new File("0" + index + ".jpg");
image[index] = ImageIO.read(file);
} catch (IOException e) {e.printStackTrace();}
}
};
}
Run Code Online (Sandbox Code Playgroud)
你可能也想开始你的线程.