30 Ekim 2018 Salı

SpringAsync SimpleAsyncTaskExecutor Sınıfı - Kullanmayın Sürekli Yeni Thread Yaratır

Giriş
TaskExecutor arayüzünü gerçekleştirir. Bu sınıfın kardeşi ThreadPoolTaskExecutor sınıfı. Açıklaması şöyle
It does not reuse threads. Why? Because it is designed to perform a large number of short-term tasks.
Klasik Spring'de Dikkatli Olmak Lazım
Açıklaması şöyle. Yani klasik Spring kullanıyorsak dikkatli olmak lazım. Eğer SpringBoot kullanıyorsak, bu sınıf yerine otomatik olarak ThreadPoolTaskExecutor yaratılır.
When no custom TaskExecutor is given, or other in other words out-of-box spring uses SimpleAsyncTaskExecutor to create threads to handle async.

SimpleAsyncTaskExecutor
 -By default concurrent threads is unlimited. Supports control by concurrencyLimit property
 - No re-use of threads

TaskExecutor based
- Allows to have thread pool with limited number of threads as required
- Since we use thread pools, re-use of threads is done and no overhead.

Bu Sınıf Sürekli Yeni Thread Yaratır
Yukarıdaki açıklamadan da görülebilir. Çünkü bu sınıftaki kod şöyle
protected void doExecute(Runnable task) {
    Thread thread = (this.threadFactory != null ? this.threadFactory.newThread(task) :
      createThread(task));
    thread.start();
}

Hiç yorum yok:

Yorum Gönder