Loading

İletişim

muhammedozturk@sakarya.edu.tr

+90 (264) 295 69 09

7. hafta

package ureticiTuketici;

 

public class ureticiTuketici {

 

    public static void main(String[] args) {

        kubDelik c = new kubDelik();

        uretici p1 = new uretici(c, 1);

        tuketici c1 = new tuketici(c, 1);

 

        p1.start();

        c1.start();

    }

}

===========================================

package ureticiTuketici;

public class uretici extends Thread {

    private kubDelik kubDelik;

    private int number;

 

    public uretici(kubDelik c, int number) {

        kubDelik = c;

        this.number = number;

    }

 

    public void run() {

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

            kubDelik.put(i);

            System.out.println("uretici #" + this.number

                               + " put: " + i);

            try {

                sleep((int)(Math.random() * 100));

            } catch (InterruptedException e) { }

        }

    }

}

===========================================

package ureticiTuketici;

 

public class tuketici extends Thread {

    private kubDelik kubDelik;

    private int number;

 

    public tuketici(kubDelik c, int number) {

        kubDelik = c;

        this.number = number;

    }

 

    public void run() {

        int value = 0;

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

            value = kubDelik.get();

            System.out.println("tuketici #" + this.number

                               + " got: " + value);

        }

    }

}

===========================================

package ureticiTuketici;

 

public class kubDelik {

 

    private int contents;

    private boolean available = false;

 

    public synchronized int get() {

        while (available == false) {

            try {

                wait();

            } catch (InterruptedException e) { }

        }

        available = false;

        notifyAll();

        return contents;

    }

 

    public synchronized void put(int value) {

        while (available == true) {

            try {

                wait();

            } catch (InterruptedException e) { }

        }

        c>

        available = true;

        notifyAll();

    }

}