Size: a a a

2021 May 12

ГР

Геннадий Романов... in pro.jvm
я легко словлю outOfMemory если добавлю в очередь 100 файлов по 180mb
источник

V

Vlad in pro.jvm
ну ты в другой поток должен перекидывать что-то легковесное, например id или название файла или Path
источник

DC

Denis Chikanov in pro.jvm
...не храни их в памяти, пока тебе не надо их непосредственно обрабатывать?
твоё решение вообще никак не поможет избежать ООМ, по-моему
источник

ГР

Геннадий Романов... in pro.jvm
ошибаешься решение как раз помогает ставлю лимит как только он достигается жду окончания работы
executorService.shutdown();
executorService.awaitTermination(8, TimeUnit.
HOURS)
создаю новый экзекьютор сервис и запускаю задачи по новой
источник

DC

Denis Chikanov in pro.jvm
Ох уж этот скиллбокс-дривен девелопмент.
источник

ГР

Геннадий Романов... in pro.jvm
а на запуске метода run() он файл будет по id отправлять?
это все выльется в OOM на более позднем этапе и только
источник

DC

Denis Chikanov in pro.jvm
У тебя submit() возвращает фьючу. Для всех фьюч ты можешь отследить, завершились ли они. Завершать экзекьютор сервис для этого вообще нахер не надо, и никак этому не помогает.
источник

V

Vlad in pro.jvm
ну если тебе нужно ограничить, есть такая штука - rate limit. Вот например
https://github.com/vladimir-bukhtoyarov/bucket4j

короче возвращаясь к твоему вопросу изначальному, решение как замокать сказали - dependency injection твой друг, по-другому простыми средствами никак. Может какой-то powerMock поможет
источник

ГР

Геннадий Романов... in pro.jvm
powerMock я и использовал но он работает с junit4
видители блядь я два модуля использую junit4 & junit 5
попросили переделать
источник

ГР

Геннадий Романов... in pro.jvm
а если у меня 1000 задач я что каждой буду лепить фьючу и
всей кучей пихать в if?
источник

ГР

Геннадий Романов... in pro.jvm
если есть варик проверить выполнение всех задач в экзекьюторе без завершения то да это было бы то
источник

DC

Denis Chikanov in pro.jvm
Джавадок к ES открой, ей-богу.
источник

DC

Denis Chikanov in pro.jvm
Про циклы и применение членов пакета java.util.collection точно в @javastart
источник

ГР

Геннадий Романов... in pro.jvm
по сути то что использую
executorService.shutdown();
executorService.awaitTermination(8, TimeUnit.
HOURS)

переделать просто на
executorService.awaitTermination(8, TimeUnit.
HOURS
источник

DC

Denis Chikanov in pro.jvm
Нет, это всё ещё жуткая порнография по дизайну И исполнению, которая не пройдет ни одно нормальное код-ревью; если это не вызвало вопросов на твоём текущем месте работы, его надо менять уже вчера, чтобы расти как специалисту
источник

V

Vlad in pro.jvm
CompletionService посмотри например и как используется
источник

ГР

Геннадий Романов... in pro.jvm
ты не назвал метода и ES который я должен был употребить
для получения boolean по итогу выполнения всех задач или timeOut
https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ExecutorService.html
источник

ГР

Геннадий Романов... in pro.jvm
https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ExecutorCompletionService.html
аналогично
метода который мне вернет true по завершению всех задач или false по timeOut там вообще нет
источник

V

Vlad in pro.jvm
потому что такое не часто требуется. Если нужно, возьми примеры и напиши что нужно
источник

ГР

Геннадий Романов... in pro.jvm
executorService.shutdown();
executorService.awaitTermination(8, TimeUnit. работает как надо
без shutdown  он работать как надо не будет
источник