О ThreadFactory

java.util.concurrent.Threadfactory является интерфейсом. Его имплементации — это объекты, которые создают новые потоки при обращении к ним. Использование ThreadFactory избавляет от необходимости вызовов new Thread.

Простейшая реализация интерфейса ThreadFactory такова

class SimpleThreadFactory implements ThreadFactory {
public Thread newThread(Runnable r) {
return new Thread(r);
}
}

Java использует метод defaultThreadFactory класса java.util.concurrent.Executors как одну из реализаций интерфейса ThreadFactory. Когда в метод, создающий одну из реализаций интерфейса java.util.concurrent.ExecutorService, не передана кастомная реализация ThreadFactory, будет использован defaultThreadFactory. Её реализация приведена выше.

Использование ThreadFactory придаёт дополнительную гибкость при работе с Thread Pools. К примеру, если нужно, чтобы все потоки, создаваемые в Thread Pool, были демонами, можно задать

class DaemonThreadFactory implements ThreadFactory{
@Override
public Thread newThread(Runnable r) {
Thread t = new Thread(r);
t.setDaemon(true);
return t;
}
}

и предоставить экземпляр DaemonThreadFactory как аргумент соответствующего метода класса java.util.concurrent.Executors

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *