У меня есть вопрос о пуле потоков.
Вот такая у меня ситуация: Где-то из бэкэндсервиса мы получаем список файлов pdf.
Первоначально эти страницы PDF необходимо преобразовать в.bmp файлы.
После этого преобразования необходимо напечатать эти bmp.
Проблема в том, что для выполнения задач преобразования и печати требуется некоторое время, и я хочу ускорить этот процесс, потому что иначеПройдет некоторое время, прежде чем кто-то увидит, что что-то выходит из принтера.
Решение, которое я задумал, заключалось в создании 2 потоков ThreadPools: один для преобразования и один для печати.
Это были бы мои Threadpools:
ExecutorService convertPool = Executors.newFixedThreadPool(10);
ExecutorService printPool = Executors.newSingleThreadExecutor();
A convertPool
с 10 потоками для преобразования страниц PDF в BMP.
Когда это будет сделано, созданные BMP будут отправлены на printPool,Это одна нить, потому что всегда может быть только одна печать.
Но теперь возникает мой вопрос:
поэтому convertPool выполнил свою работу с первым pdf и отправил все будущие задачи наPrintPool для печати.
Но когда printPool занят, я хочу, чтобы convertPool
начинался уже со 2-го pdf.Таким образом, когда PrintPool завершит работу с печатью bmp из первого файла pdf, он может немедленно начать работу с печатью bmp второго файла pdf, поскольку они уже созданы.
Но как я могу это сделать?настроить этот механизм?Может ли кто-нибудь помочь мне с этим?
Спасибо!