Middle
Java-da Executorlar necə işləyir?
sobes.tech Süni İntellekt
AI-dan cavab
Executor — bu Java-da, tapşırıqları işə salmaq üçün müqaviləni müəyyən edən interfeysdir. Hər tapşırıq üçün açıq şəkildə iş parçacığı yaratmaq əvəzinə, tapşırıqları icra edənlərə göndərirsiniz və onlar iş parçacqlarının yaradılmasını, istifadəsini və məhvinə nəzarət edir.
Əsas üstünlüklər:
- İş parçacığı idarəetməsi: İş parçacığı hovuzunu idarə etmək üçün vahid üsul təmin edir, əl ilə iş parçacığı yaratma və sinxronizasiya etmədən.
- Effektivlik: Mövcud iş parçacqlarını yenidən istifadə edir, iş parçacqlarının yaradılması və məhvinə görə xərcləri azaldır.
- Performans: Tapşırıqların asinxron icrası ilə tətbiqlərin performansını və cavabvermə qabiliyyətini artırır.
Executor-in bir metodu var:
// Verilmiş əmri gələcəkdə bir vaxtda icra edir.
void execute(Runnable command);
Tez-tez istifadə olunan alt növlər:
ExecutorService:Executor-i genişləndirir və icraçının həyat dövrünü idarə etmək və tapşırıqların nəticələrini almaq üçün əlavə metodlar təmin edir (məsələn,Futurevasitəsilə).ScheduledExecutorService:ExecutorService-i genişləndirir və tapşırıqları gecikmə və ya cədvələ uyğun icra etməyə imkan verir.
Executors sinfi müxtəlif növ icraçıların yaradılması üçün fabrik metodları təqdim edir:
// Sabit sayda işçi ilə işçi hovuzu yaradır.
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(5);
// Dinamik olaraq işçi sayını tənzimləyə bilən hovuz yaradır.
ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
// Cədvələ uyğun tapşırıqları icra edə bilən hovuz yaradır.
ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(3);
İstifadə nümunəsi:
// İcraçı obyekti
ExecutorService executor = Executors.newFixedThreadPool(2);
// İcra ediləcək tapşırıq
Runnable task = new Runnable() {
@Override
public void run() {
// Tapşırıq kodu
System.out.println("Tapşırıq işə düşür: " + Thread.currentThread().getName());
}
};
// Tapşırığı icraçıya göndərmək
executor.execute(task);
// İcraçını bağlamaq (resursların sərbəst buraxılması üçün vacibdir)
executor.shutdown();
execute() çağırıldıqda, icraçı tapşırığı (Runnable) alır və onu icra üçün öz iş parçacığından birinə təyin edir. Tapşırıqların paylanması və onların həyat dövrü icraçı tərəfindən idarə olunur.