Java ile Multithreading
Herkese merhabalar, bu yazımızda sizlere Java programlama dilinde Multithreading yapısından bahsedeceğim. Thread yapısından bahsederek Örnek uygulama geliştireceğizHadi başlayalım
Multithreading nedir ?
Multithreading, işlemcinin daha efektif bir biçimde kullanılabilmesi için bir programın farklı işlemlerinin ayrı ayrı işlem parçacıklarında yapılmasına denir. İşlem parçacıkları thread olarak adlandırılır. Threadlar bir ana işlemin içeirsinde çalışan ve processlere göre daha az kaynak tüketerek asenkron olarak çalışan yapılardır.
Şimdi bu yapıları inceleyelim.
Thread sınıfından kalıtım alınarak Nasıl thread türetilir:
Bir sınıf oluşturulur ve bu sınıf Thread sınıfından kalıtım alır. Thread sınıfında virtual olarak tanımlanan run() metodu bulunmaktadır. run() metodu bir threadın başlangıç metodudur. Bizde işlemlerimizi yapabilmek için run() metodunu yeniden tanımlarız ve yapacağımız işlemleri burada tanımlarız.
Bu ilgili sınıf start() edildiğinde run() metodu otomatik olarak çağrılır ve thread arka planda işlemlerine başlar.
Aşağıda Thread sınıfından türetilen bir Thread sınıfının nasıl oluşturulduğunu be başlatıldığını görmektesiniz.
public class JavaMultithreading {
public static void main(String[] args) {
new TheCounterWithThread(33).start();
}
}
class TheCounterWithThreadextends Thread{
int counter = 0;
public TheCounterWithThread(int startFrom){
this.counter = startFrom;
}
public void run(){
while(true){
counter++;
System.out.println(counter);
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
Logger.getLogger(TheCounterWithThread.class.getName())
.log(Level.SEVERE, null, ex);
}
}
}
}
Program çıktısı aşağıdaki gibi olacaktır
34
35
36
37
38
39
40
41
42
...
şeklinde devam edecektir.
Şimdi birde Runnable interface ile Multithreading işleminin nasıl yapıldığına bakalım
Runnable arayüzünü kullanmak için bir sınıf oluşturulur ve bu sınıfı Runnable arayüzü implements edilir. Bu sayede run() sınıfı override edilebilmiş olunur. İlgili metod doldurulur ve start metodu ile bu sınıf çağrıldığında arka plan thread otomatik olarak run() metodu ile başlatılmış olur.
Aşağıda Runnable arayüzü ile bir sınıfın kullanımı görülmektedir.
public class JavaMultithreading {
public static void main(String[] args) {
new TheCounterWithRunnable(33).run();
}
}
class TheCounterWithRunnable implements Runnable{
int counter = 0;
public TheCounterWithRunnable(int startFrom){
this.counter = startFrom;
}
@Override
public void run() {
while(true){
counter++;
System.out.println(counter);
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
Logger.getLogger(TheCounterWithRunnable.class.getName())
.log(Level.SEVERE, null, ex);
}
}
}
}
Program çıktısı aşağıdaki gibi olacaktır
34
35
36
37
38
39
40
41
şeklinde devam edecektir.
Şimdi son olarak birden fazla threadi aynı paralel olarak çalıştırma örneğini inceleyelim.
public class JavaMultithreading {
public static void main(String[] args) {
String[] arr = { "Burak" ,"Hamdi" ,"TUFAN" ,"The" ,"Code" ,"Program" };
for(int i=0; i<arr.length; i++){
new TheMultiCounter(arr[i]).start();
}
}
}
class TheMultiCounter extends Thread{
int counter = 0;
String threadName = "";
public TheMultiCounter(String threadName){
this.threadName = "Thread " + threadName;
}
public void run(){
while(true){
counter++;
System.out.println(threadName + " : " +counter);
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
Logger.getLogger(TheCounterWithThread.class.getName())
.log(Level.SEVERE, null, ex);
}
}
}
}
Program çıktısı aşağıdaki gibi olacaktır
Thread Burak : 1
Thread Hamdi : 1
Thread Code : 1
Thread TUFAN : 1
Thread The : 1
Thread Program : 1
Thread Program : 2
Thread The : 2
Thread TUFAN : 2
Thread Hamdi : 2
Thread Burak : 2
Thread Code : 2
Thread Program : 3
Thread The : 3
Thread Hamdi : 3
Şeklinde devam edecektir
Bu yazımızda buraya kadar.
https://github.com/thecodeprogram/TheSingleFiles/blob/master/JavaMultithreading.java
Burak Hamdi TUFAN
Comments