package cn.waitandnotify2;
public class RunnableTest {
private boolean flag = true;
public synchronized void zi(int change) {
if (!flag) {
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
for (int i = 1; i <= 5; i++) {
System.out.println("子线程" + change + "执行" + i + "次");
}
flag = false;
this.notify();
}
public synchronized void fu(int change) {
if (flag) {
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-gen*erated catch block
e.printStackTrace();
}
}
for (int i = 1; i <= 5; i++) {
System.out.println("父线程" + change + "执行" + i + "次");
}
flag = true;
this.notify();
}
}
package cn.waitandnotify2;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
new Test().work();
}
public void work() {
final RunnableTest test = new RunnableTest();
new Thread(new Runnable() {
public void run() {
for (int i = 1; i <= 3; i++) {
test.zi(i);
}
}
}).start();
for (int i = 1; i <= 3; i++) {
test.fu(i);
}
}
}