/***********************************************************************************
---------Processor--------
+lock
+liste
+LIMIT
-consumer()
-producer()
-start()
-----------------------------
Processor sınıfı içinde bir bağlı liste tutmaktadır. Uretici maksimum üretim miktarı 10 olarak belirlenmiştir.
Uretim başlamadan tüketim yapılamaz.Tüketici 10 elamanını tükettikten sonra bekleme durumunda. Uretici ise LIMIT=10 ulaştığında üretimi durdurmaktadır.Taki tüketici ürünleri alana kadar.
LIMIT=0 ise Üretici üretmeye başlar. LIMIT=10 ise Tüketici tüketmeye başlar. LIMIT=10 Üretim durmaktadır. LIMIT=0 ise Tüketici beklemektedir.
/*********************Source Code Java*************************************
package com.thre.aproach;
import java.util.LinkedList;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author ozaytunctan13
*/
public class Processor {
private Object lock = new Object();
private LinkedList<Integer> list = new LinkedList<>();
private final int LIMIT = 10;
private int value = 0;
public void consume() throws InterruptedException {
while (true) {
synchronized (lock) {
while (list.size() == 0) {
lock.wait();
}
System.out.print("List is size " + list.size());
int val = list.removeFirst();
System.out.println(" consumer is value is " + val);
lock.notify();
}
Thread.sleep(1000);
}
}
public void produce() throws InterruptedException {
while (true) {
synchronized (lock) {
while (list.size() == LIMIT) {
try {
lock.wait();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
list.add(value++);
lock.notify();
}
}
}
public void start() {
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
try {
produce();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
});
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
try {
consume();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
});
t1.start();
t2.start();
try {
t1.join();
t2.join();
} catch (Exception e) {
}
}
public static void main(String[] args) {
Processor p = new Processor();
p.start();
}
}
---------Processor--------
+lock
+liste
+LIMIT
-consumer()
-producer()
-start()
-----------------------------
Processor sınıfı içinde bir bağlı liste tutmaktadır. Uretici maksimum üretim miktarı 10 olarak belirlenmiştir.
Uretim başlamadan tüketim yapılamaz.Tüketici 10 elamanını tükettikten sonra bekleme durumunda. Uretici ise LIMIT=10 ulaştığında üretimi durdurmaktadır.Taki tüketici ürünleri alana kadar.
LIMIT=0 ise Üretici üretmeye başlar. LIMIT=10 ise Tüketici tüketmeye başlar. LIMIT=10 Üretim durmaktadır. LIMIT=0 ise Tüketici beklemektedir.
/*********************Source Code Java*************************************
package com.thre.aproach;
import java.util.LinkedList;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author ozaytunctan13
*/
public class Processor {
private Object lock = new Object();
private LinkedList<Integer> list = new LinkedList<>();
private final int LIMIT = 10;
private int value = 0;
public void consume() throws InterruptedException {
while (true) {
synchronized (lock) {
while (list.size() == 0) {
lock.wait();
}
System.out.print("List is size " + list.size());
int val = list.removeFirst();
System.out.println(" consumer is value is " + val);
lock.notify();
}
Thread.sleep(1000);
}
}
public void produce() throws InterruptedException {
while (true) {
synchronized (lock) {
while (list.size() == LIMIT) {
try {
lock.wait();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
list.add(value++);
lock.notify();
}
}
}
public void start() {
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
try {
produce();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
});
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
try {
consume();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
});
t1.start();
t2.start();
try {
t1.join();
t2.join();
} catch (Exception e) {
}
}
public static void main(String[] args) {
Processor p = new Processor();
p.start();
}
}
Hiç yorum yok:
Yorum Gönder
Lütfen yorumlarınızı iletiniz...