# İŠParçacıÄı Havuzları (ThreadPooling) Thread yaratmak cidden maliyetli bir olaydır. Her Thread için sistemde belli bir kaynak ayrılır. Bu kaynaklar CPU, Hafıza gibi önemli olanlardır. Uygulamamız çalıÅırken belli miktarda bir Thread ile sınırlandırmak isteyebiliriz. Bu nedenle Thread havuzu oluÅturup bu havuzu önceden oluÅturulmuÅ ve kullanıma hazır Thread nesneleri ile doldururuz. Böylece, performans kazanımı ve sistem kaynaklarının verimli kullanımını saÄlayabiliriz. ```java ExecutorService executor = Executors.newFixedThreadPool(15); ``` Yukarıdaki Java'da hazır bulunan "Executors" sınıfındaki "newFixedThreadPool" metodunu çaÄırarak bir Thread havuzu oluÅturabilirsiniz. Ardından bize 15 Thread'in kullanıma hazır halde bulunduÄu bir havuz oluÅturup verecektir. Bu fonksiyon ayrıca bize bu havuz üzerinde Thread kullanımını yönetecek "ExecutorService" tipinde bir nesne verecektir. Bu nesne üzerindeki "execute" fonksiyonuyla havuzdaki bir Thread'i kullanıp iÅimiz bitince tekrar sisteme iade edeceÄiz. ```java ExecutorService executor = Executors.newFixedThreadPool(15); QMatic qmatic = new QMatic(); for(int i=0; i < 100; i++) { executor.execute(qmatic); } ``` Yukarıdaki örnekte "QMatic" isminde önceden de kullandıÄımız Runnable tipinde sıra numarası veren sınıftan bir nesne yaratıyoruz. Bu kod parçasını "execute" fonksiyonuyla havuzdaki bir Thread'i kullanarak çalıÅtırıyoruz. GörüldüÄü gibi havuz 15 kapasiteli olmasına raÄmen döngüde 100 kez Thread kullanma talebi gelmiÅ. EÄer havuzda uygun boÅ bir Thread yoksa beklemede kalacaktır. Havuzdan ilk boÅa çıkan Thread nesnesini alıp çalıÅacaktır.