Junior
İş parçacığı hovuzu nədir?
sobes.tech Süni İntellekt
AI-dan cavab
ThreadPool (İş Parçacığı Havuzu) — tək bir varlıq tərəfindən idarə olunan və tapşırıqları qəbul edən, mövcud iş parçacqları arasında paylayan işçi iş parçacığı qrupudur. Hər tapşırıq üçün yeni iş parçacığı yaratmaq əvəzinə, havuz mövcud olanları yenidən istifadə edir.
Əsas üstünlüklər:
- Xərcləri azaltmaq: İş parçacığlarının yaradılması və məhv edilməsi vaxt və resurs tələb edir. Havuz bu ehtiyacı aradan qaldırır.
- Resursların idarə olunması: Eyni vaxtda işləyən iş parçacığı sayını məhdudlaşdırır, sistem resurslarının tükənməsinin qarşısını alır.
- Performansın yaxşılaşdırılması: Tapşırıq növbəsini idarə edir, bu da tətbiqlərin ötürmə qabiliyyətini artıra bilər.
- İdarəetmənin asanlığı: Asinxron tapşırıqları yerinə yetirmək üçün mərkəzləşdirilmiş mexanizm təmin edir.
Java-da, iş parçacığı havuzları ilə işləmək üçün java.util.concurrent paketi istifadə olunur. Əsas interfeyslər və siniflər:
Executor: Tapşırıqları yerinə yetirmək üçün interfeys.ExecutorService:Executor-in genişlənməsi, havuzun həyat dövrünü idarə etmək və nəticələri almaq üçün metodlar təmin edir.Executors: StandartExecutorServicetətbiqlərini yaratmaq üçün köməkçi sinif, məsələn:newFixedThreadPool(int nThreads): Sabit sayda iş parçacığı olan havuz.newCachedThreadPool(): Lazımi qədər iş parçacığı yaradan və istifadəsiz olanları yenidən istifadə edən havuz.newSingleThreadExecutor(): Tək iş parçacığı olan havuz.newScheduledThreadPool(int corePoolSize): Planlaşdırılmış tapşırıqları yerinə yetirmək üçün havuz.
ThreadPoolExecutor: Havuzun davranışını daha incə tənzimləməyə imkan verən elastik birExecutorServicetətbiqi.
ExecutorService-in istifadəsinə nümunə:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
// Havuzda yerinə yetiriləcək nümunə tapşırıq
class MyTask implements Runnable {
private final int taskId;
public MyTask(int taskId) {
this.taskId = taskId;
}
@Override
public void run() {
System.out.println("Tapşırıq " + taskId + " yerinə yetirilir, thread: " + Thread.currentThread().getName());
try {
Thread.sleep(100); // İş simulyasiyası
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
public class ThreadPoolExample {
public static void main(String[] args) {
// Sabit sayda iş parçacığı olan havuz yaradın
ExecutorService executorService = Executors.newFixedThreadPool(3);
// Yerinə yetirmək üçün tapşırıqları göndərin
for (int i = 0; i < 10; i++) {
executorService.submit(new MyTask(i));
}
// Bütün tapşırıqlar tamamlandıqdan sonra havuzu düzgün şəkildə bağlayın
executorService.shutdown();
}
}
Havuzun həyat dövrü shutdown() və shutdownNow() metodları ilə düzgün şəkildə idarə olunur.