实例代码:
package test;
public class WNDemo {
public static void main(String[] args) {
Data2 d = new Data2();
new Producer(d).start();
new Consumer(d).start();
}
}
class Data2 {
int i;
public void add() {
synchronized (this) {
i++;
if (i % 5 == 0) {
notifyAll();
}
}
}
public void sub() {
synchronized (this) {
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Before:" + i);
i -= 5;
System.out.println("After:" + i);
}
}
}
class Consumer extends Thread {
Data2 data2;
public Consumer(Data2 data2) {
this.data2 = data2;
}
public void run() {
while (true) {
data2.sub();
}
}
}
class Producer extends Thread {
Data2 data2;
public Producer(Data2 data2) {
this.data2 = data2;
}
public void run() {
while (true) {
data2.add();
}
}
}