-- Java SE

TaskThreadDemo.java

Üç tasktan oluşan bir program olsun.

  • Birinci task A harfini 100 kere
  • İkinci task B harfini 100 kere
  • Üçüncü task 1’den 100’e kadar olan sayıları yazdırsın.

Harf taskları için PrintChar sınıfı :

public class PrintChar implements Runnable {

    private char charToPrint; // yazılacak karakter
    private int times; // kaç kere yazılacak?

    public PrintChar(char c,int t){
        charToPrint = c;
        times = t;
    }

    @Override
    public void run() {

        for (int i = 0; i < times; i++){

        System.out.print(charToPrint);
    }

    }
}

Sayı taskı için PrintNum sınıfı :

public class PrintNum implements Runnable {

    private int lastNum; // kaça kadar sayılar yazılacak?

    public PrintNum(int n){

        lastNum = n;
    }


    @Override
    public void run() {

        for(int i = 1; i <= lastNum; i++){
            System.out.print(" " + i);
        }
    }

Ve main metodu içeren TaskThreadDemo sınıfı :

public class TaskThreadDemo {

    public static void main(String args[]){

        // Taskları Oluşturma
        Runnable printA = new PrintChar('a',100);
        Runnable printB = new PrintChar('b', 100);
        Runnable print100 = new PrintNum(100);

        //Thread Oluştrma
        Thread thread1 = new Thread(printA);
        Thread thread2 = new Thread(printB);
        Thread thread3 = new Thread(print100);

        //Thread başlat

        thread1.start();
        thread2.start();
        thread3.start();
    }
}

Program çalışmaya başladığında thread kullanıldığı için tasklar eş zamanlı yapılacak.Benim bilgisayarımda çıktı şu şekilde oldu,farklı bilgisayarda farklı CPU paylaşımları olabileceği için çıktı değişiklik gösterebilir.

Eğer ki thread.start() yerine print.run() metodu kullanılsaydı,yani TaskThreadDemo sınıfı aşağıdaki gibi olsaydı,theradlar kullanılmadığı için eş zamanlı bir çalışma olmayacak,görevler tek tek ve sırayla yapılacaktı.

public class TaskThreadDemo {

    public static void main(String args[]){

        // Taskları Oluşturma
        Runnable printA = new PrintChar('a',100);
        Runnable printB = new PrintChar('b', 100);
        Runnable print100 = new PrintNum(100);

        //Thread Oluştrma
        Thread thread1 = new Thread(printA);
        Thread thread2 = new Thread(printB);
        Thread thread3 = new Thread(print100);

        //Thread başlat

        printA.run();
        printB.run();
        print100.run();
    }
}

Ve çıktı şu şekilde olacaktı :

 

 

Yorum bırak

Yorum