Это их любой способ, чтобы я мог использовать концепцию многопоточности для параллельного вызова выполнения и ускорения выполнения для созданного @RestController
, который будет принимать String
и List<MultipartFile>
в качестве параметров запроса, а кодработает нормально. Проблема здесь, если я анализирую один файл за другим через цикл for.Время, затраченное на исполнение, больше.
Ниже находится контроллер
@RequestMapping(value = "/csvUpload", method = RequestMethod.POST)
public List<String> csvUpload(@RequestParam String parentPkId, @RequestParam List<MultipartFile> file)
throws IOException {
log.info("Entered method csvUpload() of DaoController.class");
List<String> response = new ArrayList<String>();
String temp = parentPkId.replaceAll("[-+.^:,]", "");
for (MultipartFile f : file) {
String resp = uploadService.csvUpload(temp, f);
response.add(resp);
}
return response;
}
от контроллера, я вызываю uploadService.csvUpload()
метод, где я анализирую файлы один за другим, как и яиспользуя цикл For.
Ниже приведен мой класс UploadService
public String csvUpload(String parentPkId, MultipartFile file) {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(file.getInputStream()));
String line = "";
int header = 0;
while ((line = br.readLine()) != null) {
// TO SKIP HEADER
if(header == 0) {
header++;
continue;
}
header++;
//Use Comma As Separator
String[] csvDataSet = line.split(",");
//Saving it to DB
}catch(IOException ex) {
ex.printStackTrace();
}
return "Successfully Uploaded "+ file.getOriginalFilename();
}
Как сделать этот контроллер многопоточным, чтобы параллельная и быстрая обработка.Я новичок в многопоточности, и я попробовал использовать интерфейс Callable
, но метод Call()
не будет принимать параметры.
любые предложения и предложения приветствуются, заранее спасибо.