可以给出以上内容的实际代码吗
时间: 2023-10-22 09:09:28 浏览: 39
以下是 Java 多线程加载图片的示例代码:
```
import java.awt.Image;
import java.awt.Toolkit;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ImageLoader {
private ExecutorService executorService; //线程池
private List<Image> imageList; //图片列表
public ImageLoader() {
executorService = Executors.newFixedThreadPool(5); //创建大小为5的线程池
imageList = new ArrayList<Image>();
}
public void addImage(final String imagePath) {
executorService.execute(new Runnable() { //将图片加载任务添加到线程池中
@Override
public void run() {
Image image = Toolkit.getDefaultToolkit().getImage(imagePath);
imageList.add(image); //将加载完的图片添加到图片列表中
}
});
}
public List<Image> getImageList() {
executorService.shutdown(); //关闭线程池
return imageList;
}
}
```
以上代码首先创建了一个大小为5的线程池,然后定义了一个 `addImage` 方法来添加需要加载的图片路径,该方法会将图片加载任务添加到线程池中,并将加载完的图片添加到图片列表中。最后,定义了一个 `getImageList` 方法来获取加载完的图片列表。
在使用该类时,只需创建一个 `ImageLoader` 对象,并调用 `addImage` 方法来添加需要加载的图片路径,最后调用 `getImageList` 方法即可获取加载完的图片列表。
需要注意的是,由于多线程并发访问的原因,加载图片时需要使用线程安全的集合类,如 `ArrayList`。另外,如果需要对加载的图片进行缓存,可以使用 `HashMap` 等集合类来存储。