Вы находитесь на странице: 1из 2

import java.util.

Vector;
import java.util.logging.Level;
import java.util.logging.Logger;

public class PCS {

public static void main(String args[]) {
Vector sared!ueue " ne# Vector();
int si$e " %;
&read prod&read " ne# &read(ne# Producer(sared!ueue' si$e)' (Producer();
&read cons&read " ne# &read(ne# Consumer(sared!ueue' si$e)' (Consumer();
S)stem.out.print((Commencing Solution*+n();
prod&read.start();
cons&read.start();
,
,

class Producer implements -unnable {

private .inal Vector sared!ueue;
private .inal int S/01;

public Producer(Vector sared!ueue' int si$e) {
tis.sared!ueue " sared!ueue;
tis.S/01 " si$e;
,

23verride
public void run() {
.or (int i " 4; i 5 %; i66) {
S)stem.out.println((Producer Produced /tem* ( 6 i);
tr) {
produce(i);
, catc (/nterrupted17ception e7) {
Logger.getLogger(Producer.class.get8ame()).log(Level.S1V1-1' null' e7);
,

,
,

private void produce(int i) tro#s /nterrupted17ception {

99#ait i. :ueue is .ull
#ile (sared!ueue.si$e() "" S/01) {
s)ncroni$ed (sared!ueue) {
S)stem.out.println((+n!ueue is .ull ( 6 &read.current&read().get8ame()
6 ( is #aiting ' si$e* ( 6 sared!ueue.si$e()6(+n();

sared!ueue.#ait();
,
,

99producing element and noti.) consumers
s)ncroni$ed (sared!ueue) {
sared!ueue.add(i);
sared!ueue.noti.);ll();
,
,
,

class Consumer implements -unnable {

private .inal Vector sared!ueue;
private .inal int S/01;

public Consumer(Vector sared!ueue' int si$e) {
tis.sared!ueue " sared!ueue;
tis.S/01 " si$e;
,

23verride
public void run() {
#ile (true) {
tr) {
S)stem.out.println((Consumer Consumed /tem* ( 6 consume());
&read.sleep(<4);
, catc (/nterrupted17ception e7) {
Logger.getLogger(Consumer.class.get8ame()).log(Level.S1V1-1' null' e7);
,

,
,

private int consume() tro#s /nterrupted17ception {
99#ait i. :ueue is empt)
#ile (sared!ueue.is1mpt)()) {
s)ncroni$ed (sared!ueue) {
S)stem.out.println((+n!ueue is empt) ( 6 &read.current&read().get8ame()
6 ( is #aiting ' si$e* ( 6 sared!ueue.si$e()6(+n();

sared!ueue.#ait();
,
,

993ter#ise consume element and noti.) #aiting producer
s)ncroni$ed (sared!ueue) {
sared!ueue.noti.);ll();
return (/nteger) sared!ueue.remove(4);
,
,
,

Вам также может понравиться