이 코드를 사용해 보았습니다. 그러나 0을 인쇄 한 후에는 아무 것도 인쇄하지 않습니다. 내가 생각하는 잠금 장치로 인해 차단 중입니다.2 스레드를 사용하여 홀수 및 짝수 인쇄?
public class EvenOdd implements Runnable {
private Object o = new Object();
private volatile int i = 0;
public void run() {
try {
System.out.println();
if (Thread.currentThread().getName().equals("Even")) {
printEven();
} else {
printOdd();
}
} catch (Exception ee) {
ee.printStackTrace();
}
}
private void printEven() throws InterruptedException {
while (true) {
synchronized (o) {
while (this.i % 2 == 0) {
o.wait();
}
System.out.println(Thread.currentThread().getName() + i);
i++;
o.notify();
}
}
}
private void printOdd() throws InterruptedException {
while (true) {
synchronized (o) {
while (this.i % 2 != 0) {
o.wait();
}
System.out.println(Thread.currentThread().getName() + i);
i++;
o.notify();
}
}
}
}
내 TestClass에 :
EvenOdd x = new EvenOdd();
new Thread(x,"Even").start();
new Thread(x,"Odd").start();
어디에서 잘못입니까? 감사합니다.
추신 :이 질문은 여러 번 묻지 만, 나는 스스로 시도하고 싶습니다.
테스트 클래스를 추가했습니다. – Raj
@Raj 그래서 한 가지 제안이 적용됩니다. –
내 printEven 메소드에서 말하고 있습니다. 조건을 'while (this.i % 2 == 0) {' – Raj