Многопоточность в одном методе

205
23 августа 2018, 03:50

Есть метод, который декомпресит файл, но этот процесс довольной долгий (а файлов 130+). Я решил реализовать это многопоточно.

for (int i = 0; files.length > i; i++) { //foreach тут не подойдёт.
    try {
        Decoder.main(files[i].getName(), true);
    } catch (Exception ignored) {
    }
}

Каким образом заставить 2 потока работать над 1 методом? Я могу разбить этот массив на несколько частей, и запустить потоки к каждой, но меня это не совсем устраивает.

Answer 1
int cores = Runtime.getRuntime().availableProcessors();
ExecutorService executor = Executors.newFixedThreadPool(cores);
Arrays(files).stream()
             .map(File::getName)
             .<Runnable>map(name -> () -> Decoder.main(name, true))
             .forEach(executor::execute);
executor.shutdown();
READ ALSO
Данные в series

Данные в series

Нашёл пример круговой диаграммы написанной на javascript на сайте HighCharts:

268
Как Показать/скрыть div при выборе radio?

Как Показать/скрыть div при выборе radio?

Есть 2 radio "частное лицо" и "фирма"При выборе "фирма" мне надо показать поле для заполнения, а при выборе "частное лицо" это поле скрыть

232
Как убрать названия улиц с гугл maps API?

Как убрать названия улиц с гугл maps API?

У гугл карты АПИ есть свойство styles куда передаётся массив с объектами свойствЕсть ли такое свойство убирающее названия улиц с карты? помогите...

203
массивы в javascript node js. как работать с { }

массивы в javascript node js. как работать с { }

впервые столкнулся с такой проблемой) просто не могу правильно вытащить данные из массива; если до этого массивы у меня всегда выглядели

212