나는 여러 날 동안이 문제에 직면 해왔다. 제발 도와주세요. 나는 스레드 동기화를 사용하여 생산자 - 소비자 예제를 구현 중이다. 나는이 전통적인 프로그램에서 몇 가지 비틀기를 만들었다. 하나의 큐 객체 만 사용하는 대신 두 개의 큐 객체를 사용했습니다. 그러나 프로그램이 .. 작동하지 않습니다 (PS-를 난 내가 큐의 하나의 개체를 사용하여이 프로그램 작업을 할 수있어,하지만 난 두 개의 큐를 사용하려면 것은? 객체)여러 객체로 스레드 동기화
클래스 대기열 {
static int value;
static boolean valueSet = false;
public static final Object obj;
static {
obj = new Object();
}
void push() {
synchronized(Queue.obj) {
while(Queue.valueSet) {
try {
Thread.sleep(1000);
}catch(Exception e) {}
}
System.out.print("\n\n Push:- " + (++(Queue.value)));
Queue.valueSet = true;
return;
}
}
void pop() {
synchronized(Queue.obj) {
while(!(Queue.valueSet)) {
try {
Thread.sleep(1000);
}catch(Exception e) {}
}
System.out.print("\n\n Pop:- " + Queue.value);
Queue.valueSet = false;
return;
}
}
을
}
클래스 프로듀서의 Runnable {
Queue Q;
Thread P;
Producer(Queue Q) {
this.Q = Q;
P = new Thread(this);
P.start();
}
public void run() {
while(true) {
Q.push();
}
}
}
를 구현 클래스 소비자의 Runnable {
Queue Q;
Thread C;
Consumer(Queue Q) {
this.Q = Q;
C = new Thread(this);
C.start();
}
public void run() {
while(true) {
Q.pop();
}
}
}
공용 클래스 TestQueue을 {
public static void main(String[] args) {
Queue Q1 = new Queue();
Queue Q2 = new Queue();
Object obj = new Object();
Producer p = new Producer(Q1);
Consumer c = new Consumer(Q2);
}
}