Пример по теме “Java. Взаимодействие процессов”. Producer and consumer

// An implementation of a producer and consumer
class Q {int n;

 

synchronized int get() {

try{Thread.sleep(1000);}

catch(Exception e){}

System.out.println("Got: " + n);

return n;

}

 

 

 

 

 

 

 

boolean valueSet = false; 

 

synchronized int get() {

    if(!valueSet)

      try {

        wait();

      } catch(InterruptedException e) {

        System.out.println("interruptedException caught");

      }

 

      System.out.println("Got: " + n);

      valueSet = false;

      notify();

      return n;

}

  synchronized void put(int n) {this.n = n;

System.out.println("Put: " + n);

}

}

 

  synchronized void put(int n) {    if(valueSet)

      try {

        wait();

      } catch(InterruptedException e) {

        System.out.println("interruptedException caught");

      }

 

      this.n = n;

      valueSet = true;

      System.out.println("Put: " + n);

      notify();

  }

}

class Producer implements Runnable{Q q;

 

Producer(Q q) {

this.q = q;

new Thread(this, "Producer").start();

}

public void run() {

int i = 0;

while(true) {

q.put(i++);

}

}

}

 

class Consumer implements Runnable {

Q q;

Consumer(Q q) {

this.q = q;

new Thread(this, "Consumer").start();

}

public void run() {

while(true) {

q.get();

}

class PC {public static void main(String args[]) {

Q q = new Q();

new Producer(q);

new Consumer(q);

 

System.out.println("Press Control-C to stop.");

}

}

 

рассказать друзьям и получить подарок

Оставить комментарий

Ваш email не будет опубликован. Обязательные поля отмечены *

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Translate Переводчик

Подписка на новости

SmartResponder.ru
Ваш e-mail: *
Ваше имя: *

Хостинг для Wordpress сайтов