Middle
Javaда Executorлер кантип иштейт?
sobes.tech AI
AIден жооп
Executor — бул Javaда интерфейс, ал бул пулдагы тапшырмаларды аткаруу үчүн контрактты аныктайт. Ар бир тапшырма үчүн ачыкча жүгүртүүнү түзүүнүн ордуна, сиз тапшырмаларды аткаруучуларга өткөрүп жатасыз, ал эми алар жүгүртүүнү түзүү, колдонуу жана жок кылуу менен иштешет.
Негизги артыкчылыктары:
- Жүгүртүүнү башкаруу: жүгүртүү пулун башкаруунун бирдиктүү жолун камсыз кылат, жүгүртүүнү түзүү жана синхрондоштуруу иштеринен арылтат.
- Ийкемдүүлүк: бар болгон жүгүртүүлөрдү кайра колдонуп, түзүү жана жок кылуу чыгымдарын азайтат.
- Өндүрүмдүүлүк: тапшырмаларды асинхрондуу аткаруу аркылуу колдонмолордун өндүрүмдүүлүгүн жана жооп кайтаруучулугун жакшыртат.
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) алат жана аны өзүнүн пулундагы бир жипке өткөрүп, аткарууга берет. Тапшырмаларды бөлүштүрүү жана алардын жашоо цикли башкаруу аткаруучуга жүктөлгөн.