Merhaba arkadaşlar bu yazımda sizlere java da multithreading kod yazımından bahsetmek istiyorum.

Öncelikle nedir bu multithread dediğimiz kavram ve nerelerde kullanmak durumunda kalırız ondan bahsedelim. Multithread denilen kavram çok hızlı verilere işlemeye ihtiyacımız olduğunda kullanılan yapıdır.  Yazmış olduğunuz programının cihazı tam anlamıyla kullanabilmesi için bu şekilde program yazmamız gereklidir ve yazdığımız kodda yapılan işlemlerin ne kadar acil tamamlanmasına bağlı olarak tercih edilmesi gereken bir kavramdır.
Ş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 makineyi 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() metodu ile de threadin yapacağı işlemleri yazmış oluyoruz. Devamında ise 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 özel 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 implemente etmiş olan bir tane sınıfın newlenmesi ve daha sonra ise çalıştırmak için execute edilmesidir.