Определите, как создаются потоки для пула, указав ThreadFactory
.
Executors.newFixedThreadPool(1, new ThreadFactory() {
@Override
public Thread newThread(Runnable r) {
return new Thread(r) {
@Override
public void interrupt() {
// do what you need
}
};
}
});
Конечно, ThreadFactory
можно выразить лямбда-выражением.
ThreadFactory factory = (Runnable r) -> new YourThreadClass(r);
Если для потока не требуется дополнительная настройка (например, сделать его демоном), вы можете использовать ссылку на метод.Однако конструктор YourThreadClass(Runnable)
должен существовать.
ThreadFactory factory = YourThreadClass::new;
Я бы посоветовал прочитать документы ThreadPoolExecutor
и Executors
.Они довольно информативны.