Java’da Multithreading (Thread ve Runnable) – 1
Bu yazıda Java’da Multithreading işlemlere neden ihtiyaç duyarız ve nasıl kullanmalıyız bir seri halide açıklayacağım.
Java’da kodumuzun aynı anda birden fazla işlem yapmasını istediğimizde zaman Thread’leri kullanmamız gerekmektedir.
Thread’leri kullanmanın iki yolu bulunmaktadır.
- Thread
- Runnable
Thread yönteminde extend ederek, Runnable yönetimde ise implement edip run metodunu override ederek kullanabiliyoruz.
Örnek olarak;
public class Deneme extends Thread {
@Override
public void run() {
}
}
public class Deneme implements Runnable {
@Override
public void run() {
}
}
Code language: PHP (php)
run metodu thread’in çalışacağı zaman kullanılan bir metotdur.
Thread sınıfını extend ederek kullanma yöntemi tercih edilen bir yöntem değildir. Çünkü yazılımızdaki iş akışı içerisinde sınıfımızın katılım gelişimini engellemiş oluyoruz. Bir sınıf birden fazla extend işlemi olamayağından kısıtlamış olmaktayız. O yüzden Runnable’ı implement ederek kullanmayı tercih etmemiz daha doğru olacaktır.
Runnable’ı kullanarak bir örnek yapalım.
public class Deneme implements Runnable{
String name;
public Deneme(String threadname)
{
name = threadname;
}
public void run()
{
try {
for (int i = 5; i > 0; i--) {
System.out.println(name + ": " + i);
Thread.sleep(1000);
}
} catch (InterruptedException e) {
System.out.println(name + "Hata");
}
System.out.println(name + " cikiliyor.");
}
}
Code language: PHP (php)
Main sınıfımızı yazalım.
public class Main {
public static void main(String[] args) {
Deneme deneme = new Deneme("1. thread => ");
Deneme deneme1 = new Deneme("2. thread => ");
Deneme deneme2 = new Deneme("3. thread => ");
Thread thread=new Thread(deneme);
Thread thread1=new Thread(deneme1);
Thread thread2=new Thread(deneme2);
thread.start();
thread1.start();
thread2.start();
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
System.out.println("Hata");
}
System.out.println("Thread bitti.");
Code language: JavaScript (javascript)
Çıktıya bakalım ve sonrasında ne yaptığımıza bir bakalım.
2. thread => : 5
1. thread => : 5
3. thread => : 5
1. thread => : 4
2. thread => : 4
3. thread => : 4
2. thread => : 3
1. thread => : 3
3. thread => : 3
2. thread => : 2
1. thread => : 2
3. thread => : 2
1. thread => : 1
2. thread => : 1
3. thread => : 1
2. thread => cikiliyor.
3. thread => cikiliyor.
1. thread => cikiliyor.
Code language: PHP (php)
Yukarıdaki örnekte 3 adet thread oluşturduk ve start diyerek başlattık. Çıktıya bakacak olursanız belirsiz bir sıra içerisinde çalışıyor ve bu sıra her çalışma zamanında her zaman değişmesi anlamına gelmektedir.
Thread’lerin çalışma planını JVM belirlemekte. CPU’nun durumuna göre farklı çıktılar oluşur.
No Comment! Be the first one.