package cs.f;
public class ThredThird {
public static void main(String[] args) {
Q a = new Q();
new Thread(new Changed(a)).start();
new Thread(new Readed(a)).start();
}
}
class Q {
String name = "张三";
String sex = "男";
boolean bfull = false;
public synchronized void put(String name, String sex) {
if (bfull) {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
this.name = name;
this.sex = sex;
bfull = true;
notify();
}
public synchronized void get() {
if (!bfull) {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(this.name + ":" + this.sex);
bfull = false;
notify();
}
}
class Changed implements Runnable {
Q q = null;
public Changed(Q q) {
this.q = q;
}
public void run() {
int i = 0;
while (true) {
synchronized (q) {
if (i == 0) {
q.put("张三", "男");
} else {
q.put("张丽", "女");
}
i = (i + 1) % 2;
}
}
}
}
class Readed implements Runnable {
Q q = null;
public Readed(Q q) {
this.q = q;
}
public void run() {
while (true) {
synchronized (q) {
q.get();
}
}
}
}