Bu Kategoriye İçerik Girin veya Soru Sorun

Kategori İçi Sözlük

Bu Sayfayı Paylaş:

TaskExecutor

Tanım: Spirng'de, java.util.concurrent API'sindeki Executor interface'inden türeyen , Runnable sınıflarını çalıştırmak için kullanılan ana interface. AsyncListenableTaskExecutor, AsyncTaskExecutor, SchedulingTaskExecutor interface'leri bu interface'den türemiştir.

TaskExecutor Tipleri

Spirng'de aşağıdaki TaskExecutor tipleri bulunmaktadır:
  • SimpleAsyncTaskExecutor : Her execute işleminde ayrı bir Thread açılır ve bu şekilde task'lar asenkron çalışır
  • SyncTaskExecutor : Task'ların senkron olarak çalışmasını sağlar
  • ThreadPoolTaskExecutor : En genel kullanım içindir. "corePoolSize", "maxPoolSize", "keepAliveSeconds", "queueCapacity" gibi özelliklerinin set edilebilmesini sağlayan bir TaskExecutor adapter sınıfı
  • ConcurrentTaskExecutor : TaskExecutor oluşturmak için kullanılan bir Executor adapter'ı.


Basit Bir Task Örneği

Ekrana Hello World yazan basit bir task aşağıdaki gibidir:
@Component
@Scope("prototype")
public class TestTask implements Runnable{
	String name;
	public void setName(String name){
		this.name = name;
	}
	@Override
	public void run() {
		System.out.println("hello world : " + name);
 	}
}
Bu task'ları çalıştırmak için ThreadPoolTaskExecutor kullanılabilir. Application aşağıdaki gibidir :
@SpringBootApplication
@ComponentScan(basePackages = { "com.fibiler.test.task"})
public class Application {
	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}
	@Autowired
	TestTask testtask1;
	@Autowired
	TestTask testtask2;
	@Autowired
	TestTask testtask3;
	@Bean
	public ThreadPoolTaskExecutor taskExecutor() {
	    ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
	    taskExecutor.setMaxPoolSize(10);
	    taskExecutor.afterPropertiesSet();
	    testtask1.setName("Task 1");
	    testtask2.setName("Task 2");
	    testtask3.setName("Task 3");
	    taskExecutor.execute(testtask1);
	    taskExecutor.execute(testtask2);
	    taskExecutor.execute(testtask3);
	    return taskExecutor;
	}
}
Application'da 3 farklı task yaratılmış ve çalıştırılmıştır. Uygulama çalıştığında ekranda üç farklı Hello World gözükecektir.




Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir