Я хочу считать CSV
файл с большим количеством строк и обработать эти строки в многопоточном режиме. Делаю так:
@SpringBootApplication
public class CsvReaderApplication implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication.run(CsvReaderApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
System.out.println(args[0]);
String thisLine;
int count = 0;
BufferedReader bufferedReader = new BufferedReader(new FileReader(args[0]));
ExecutorService pool = Executors.newFixedThreadPool(1000);
while ((thisLine = bufferedReader.readLine()) != null ) {
if (count > 150) count = 0;
pool.submit(new MyTask(thisLine));
count++;
}
pool.shutdown();
}
}
class MyTask implements Runnable {
private String line;
private static int countLine = 0;
public MyTask(String line) {
this.line = line;
}
@Override
public void run() {
countLine ++;
System.out.println("Line: " + line + " countLine: " + countLine);
//бизнес логика
}
}
В итоге получается так, что в методе run
строки выводятся не в порядке, в котором они идут в файле, а в разнобой. Можно ли как-то обработать строки в том порядке, в котором они идут в исходном файле или вообще есть более эффективный способ?
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть задача: Нужно реализовать функцию, которая будет искать число сочетаний из N по M, только с определенными условиями: Функция должна возвращать...
вот библиотекавнизу есть и документация к ней https://bintray
Всем привет Думал, что разобрался в сериализации, но наткнулся на непоняткуСоздаю LinkedList< User >