Middle
Kako funkcionišu Executor u Javi?
sobes.tech АИ
Одговор од АИ
Executor — то интерфејс у Јави који дефинише уговор за извршавање задатака у пулу нитеи. Уместо јасног креирања нитеи за сваки задатак, преносите задатке извршитељима, а они управљају креирањем, коришћењем и уништавањем нитеи.
Главне предности:
- Управљање нитеи: Обезбеђује јединствен начин управљања пулом нитеи, елиминишући ручно креирање и синхронизацију нитеи.
- Ефикасност: Поново користи постојеће нитеи, смањујући трошкове креирања и уништавања нитеи.
- Перформансе: Побољшава перформансе и одзивност апликација кроз асинхроно извршавање задатака.
Executor има једну методу:
// Извршава ову команду у неком будућем тренутку.
void execute(Runnable command);
Често се користе подтипови:
ExecutorService: проширујеExecutorи пружа додатне методе за управљање животним циклусом извршитеља и добијање резултата извршавања задатака (нпр. прекоFuture).ScheduledExecutorService: проширујеExecutorServiceи омогућава извршавање задатака са закашњењем или по распореду.
Класа Executors пружа фабричке методе за креирање различитих типова извршитеља:
// Креира пул нитеи са фиксним бројем нитеи.
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(5);
// Креира пул нитеи који може динамички регулисати број нитеи.
ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
// Креира пул нитеи који може извршавати задатке по распореду.
ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(3);
Пример коришћења:
// Објекат извршитеља
ExecutorService executor = Executors.newFixedThreadPool(2);
// Задатак за извршавање
Runnable task = new Runnable() {
@Override
public void run() {
// Код задатка
System.out.println("Извршава се задатак у потоку: " + Thread.currentThread().getName());
}
};
// Пренос задатка извршитељу
executor.execute(task);
// Завршетак рада извршитеља (неопходно за ослобађање ресурса)
executor.shutdown();
При позиву execute(), извршитељ узима задатак (Runnable) и преноси га једном од поткова у свом пулу на извршавање. Управљање расподелом задатака међу потковима и њиховим животним циклусом преузима извршитељ.