При загрузке файлов в Box у меня возникают проблемы с производительностью. Мне нужно загрузить около 50000 изображений. Я подозревал, что это может быть потому, что я загружаю их по одному. Поэтому я подумал о том, чтобы попробовать массовую загрузку для загрузки. Ниже приведен фрагмент моего кода:
List<String> filesToUpload = new ArrayList<String>();
public boolean processImage(File imageToProcess, String newName, String temp_location, String boxLocation) throws MagickException {
File renamedImage = renameImage(newName, temp_location);
boolean isProcessed = convertToPNG(imageToProcess,
renamedImage);
String filePath = renamedImage.getPath();
System.out.println("Processed Image: "+filePath);
if (log.isInfoEnabled()) {
log.info("processEntries - filePath " + filePath);
}
filesToUpload.add(filePath);
if (filesToUpload.size() == 100) {
UploadFileAsAppUser.uploadFilesAsBoxAppUser(filesToUpload, boxLocation);
filesToUpload = new ArrayList<String>();
}
return isProcessed;
}
Я не проверял это. Если размер списка равен 100, он начнет загружать изображения в Box, но также прекратит генерировать изображения на той же стороне.
Я могу создать две темы. Один будет генерировать изображения, а другой будет загружать изображения. Но в моем блоке загрузки изображений я также устанавливаю пустой список, который произойдет после загрузки всех 100 изображений. Но если я подожду загрузки всех 100 изображений, а затем начну генерировать следующий набор изображений (поскольку я очищаю список и инициализирую его как пустой), то нет смысла иметь несколько потоков.
Должен ли я иметь два списка? Thread1 сгенерирует первые 100 изображений. После этого Thread2 начнет загружаться, и в то же время первый поток начнет генерировать другой набор изображений для списка 2 и т. Д.
Дайте мне знать, если это сбивает с толку. Я могу объяснить дальше. Спасибо!