Thread (Multi Tasking – Çok işlemcilik)

Android Yazılım konuları
Cevapla
abdulkadirlevent
Site Admin
Mesajlar: 18
Kayıt: Pzr Oca 19, 2020 4:27 pm

Thread (Multi Tasking – Çok işlemcilik)

Mesaj gönderen abdulkadirlevent »

Tek bir program akışı içerisinde birden fazla işlemin gerçekleştirilmesi
Java'da Thread sınıfıyla mümkündür.

Sleeping - Uyutma
• Thread.sleep(int milliseconds)
• Milisaniyenin 1/1000’idir.
• Static bir metoddur , heryerde çağrılabilir.
• Yalnızca içinde bulunduğu thread’i etkiler.
Thread Oluşturmak için İki Yöntem
• Thread sınıfından türetme:
• class BenimThreadim extends Thread{…..}
• BenimThreadim is = new BenimThreadim();
• is.start(); ile başlar
• Yalnızca tek bir sınıftan türetme yapılabilmektedir.
• Veya Runnable interface’ten türetme:
• class BenimThreadim implements Runnable {…..}
• Thread is = new Thread(new BenimThreadim);
• is.start(); başlar
• run() metodunun overrideKasım ADALAN edilmesi gerekir.


Thread’lerin Senkronizasyonu
• İki thread aynı anda aynı veriye güvenli bir şekilde erişemez.
• Threadlerin veriye sırayla erişimi synchronized sağlanır.
• public synchronized void bilgiAl(){}


Kod: Tümünü seç

public class ThreadMain {

    public static void main(String args[]) {

        BirinciThread bt1 = new BirinciThread();
        bt1.start();

        Thread bt2 = new Thread(new ThreadDiger());
        bt2.start();

        for(int i=1;i<101;i++){
            System.out.println("Main for:"+ i);
        }
    }

    static  class BirinciThread extends  Thread{
        @Override
        public void run() {
            for(int i=1;i<101;i++){
                System.out.println("BirinciThread:"+ i);
            }
        }
    }
}
Thread Diger Sınıfı

Kod: Tümünü seç

public class ThreadDiger implements Runnable {
    @Override
    public void run() {
        for(int i=1;i<101;i++){
            System.out.println("ThreadDiger:"+ i);
        }
    }
}

Thread nesneler ile çalışma örneği.

Kod: Tümünü seç

    public static void main(String args[]) {

        Personel p = new Personel(1,"Ahmet");
        
        MyThread mt1 = new MyThread("ilk iş",p);
        mt1.start();

        MyThread mt2 = new MyThread("ikinci iş",p);
        mt2.start();
    }
    
    
        static  class MyThread extends  Thread{
        private String isAdi;
        private Personel p;

        public MyThread(String isAdi, Personel p) {
            this.isAdi = isAdi;
            this.p = p;
        }

        @Override
        public void run() {
            p.bilgiAl(isAdi);
        }
    }
    

Personel SINIFI

Kod: Tümünü seç

public class Personel {
    private  int id;
    private String adi;

    public Personel() {
    }

    public Personel(int id, String adi) {
        this.id = id;
        this.adi = adi;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getAdi() {
        return adi;
    }

    public void setAdi(String adi) {
        this.adi = adi;
    }

    public void bilgiAl(String adi) {
        for(int i=1;i<101;i++){
            System.out.println("Thread ile bilgiAl:"+ adi+" "+ i);
        }
    }
}

Cevapla