Использование ThreadPoolExecutor .
BlockingQueue workQueue= new LinkedBlockingQueue<Runnable>(100); // Work pool size
ThreadPoolExecutor executor = new ThreadPoolExecutor(
Runtime.getRuntime().availableProcessors(), // Initial pool size
Runtime.getRuntime().availableProcessors(), // Max pool size
1, // KEEP_ALIVE_TIME
TimeUnit.SECONDS, // KEEP_ALIVE_TIME_UNIT
workQueue);
Разместите вашу задачу Runnable
с помощью метода execute () .
void execute (Runnable command)
Выполняет задание когда-нибудь в будущем. Задача может выполняться в новом потоке или в существующем потоке пула
Относительно вашего второго запроса:
Как я могу убить эти темы?
Как только вы закончите со всей своей работой с ThreadPoolExecutor
, выключите ее должным образом, как указано в посте ниже:
Как правильно отключить Java ExecutorService