Merhaba arkadaşlar, bu yazımda sizlere java da multi-threading kod yazımından bahsetmek istiyorum.

Öncelikle nedir bu multi-thread dediğimiz kavram ve nerelerde kullanmak durumunda kalırız ondan bahsedelim. Multi-thread denilen kavram, verileri çok hızlı işlemeye ihtiyacımız olduğunda kullanılan yapıdır. Yazmış olduğunuz programın, sistem kapasitesini tam anlamıyla kullanabilmesi için bu şekilde program yazmamız gereklidir. Yaptırmak istediğimiz işlemlerin aciliyet surumuna göre yazılacak programlama kodu da değişiklik gösterecektir.

Şimdi günlük hayatta başınıza gelebilecek bir tane örnek ile açıklamaya çalışayım. Diyelim ki bir tane program yazdınız ve kullanıcıya arayüzden bir butona tıklamasını sağladınız ve o anda makinayı yoran ağır işlemler yapmak durumundasınız. Bu durumda  multi-threading yapı kullanmazsanız, orada yapılan işlemler tamamlayıncaya kadar kullanıcı arayüzde hiç bir şey yapamayacak program yanıt vermeyecektir. Bu durumun önüne geçebilmek için multi-thread kullanıyoruz.

 Şimdi gelelim kodlara
Aşağıda biz Readcvs diye bir tane class oluşturduk . Bu class da biz elimizde yer alan cvs uzantılı bir tane dosyadan okuma işlemi yapan bir tane thread sınıfı tanımlamış oluyoruz.

synchronized void run() methodu ile de threadin yapacağı işlemleri yazmış oluyoruz. Devamında is,e bir file okur gibi normal yaptığımız işlemleri yapıyoruz.

Burada biz dosyanın yolunu belirtiyoruz. BufferedReader ile de okunacak dosya için bir tane stream hazırlıyoruz.

Burada ise o pathde yer alan dosyayı utf-8 formatında okuyup, devamında yer alan kodda ise while döngüsü ile dosyanın tamamını okuyuncaya kadar devam edip bir tane listeye atıyoruz.

Buraya kadar olan kısımda thread tanımlamış olduk. Şimdi ise aynı anda bir kaç tane threadi çalıştıracak ve synchronized yazdığımız için de bir kaydın tekrarlanmasına engel olacak bir yapı kurmuş olduk. Bu tip static gibi özel bir tip olup, bir dosya üzerinde birden fazla thread okuma yazma işlemi yapıyorsa o zaman kullanılması gereken bir tiptir.

Burada biz 10 tane threadi sırası ile (eş zamanlı )olarak çalıştıran java 7 ile birlikte gelmiş olan bir sınıf kullanarak multithread bir yapı kazandırmış olduk. Burada dikkat edilmesi gereken nokta worker dediğimiz runnable tanımladığımız yerde threadi extend etmiş veya Runnable interfacesini implement etmiş olan bir tane sınıfın yenilenmesi ve daha sonra ise çalıştırmasıdır (execute).