线程协作:wait,notify,notifyAll
package com.thread.cooperation;
public class Demo01 {
public static void main(String[] args) {
Container container = new Container();
new MyThread(container).start();
new MyThread1(container).start();
new MyThread(container).start();
new MyThread1(container).start();
new MyThread(container).start();
new MyThread1(container).start();
}
}
class MyThread extends Thread {
private Container container;
public MyThread(Container container) {
this.container = container;
}
@Override
public void run() {
container.get();
}
}
class MyThread1 extends Thread {
private Container container;
public MyThread1(Container container) {
this.container = container;
}
@Override
public void run() {
container.put();
}
}
class Container {
boolean flag = true;
public synchronized void put() {
while (true) {
if (!flag) {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(
Thread.currentThread().getName() + "放入内容...........");
flag = false;
notifyAll();
}
}
public synchronized void get() {
while (true) {
if (flag) {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(
Thread.currentThread().getName() + "获取内容...........");
flag = true;
notifyAll();
}
}
}