import java.util.ArrayList;
import java.util.List;public class GuoYuan { static boolean a = false;
static boolean b = false;
static List<Apple> apple = new ArrayList<>(); public static void main(String[] args) {
new GuoYuan().new Put().start();
new GuoYuan().new Out().start();
} class Put extends Thread { @Override
public void run() {
synchronized (String.class) {
while (true) {
apple.add(new Apple());
System.out.println("放一个苹果");
if (b == true) {
Object.class.notify();
b = false;
}
if (apple.size() == 5) {
System.out.println("苹果放满了,等待拿出");
try {
a = true;
String.class.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
} class Out extends Thread { @Override
public void run() {
synchronized (Object.class) {
while (true) {
if (apple.size()>0) {
apple.remove(0);
System.out.println("拿一个苹果");
}
if (a == true) {
String.class.notify();
a = false;
}
if (apple.size() == 0) {
System.out.println("苹果没了,等待放入");
try {
b = true;
Object.class.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
}
}
import java.util.List;public class GuoYuan { static boolean a = false;
static boolean b = false;
static List<Apple> apple = new ArrayList<>(); public static void main(String[] args) {
new GuoYuan().new Put().start();
new GuoYuan().new Out().start();
} class Put extends Thread { @Override
public void run() {
synchronized (String.class) {
while (true) {
apple.add(new Apple());
System.out.println("放一个苹果");
if (b == true) {
Object.class.notify();
b = false;
}
if (apple.size() == 5) {
System.out.println("苹果放满了,等待拿出");
try {
a = true;
String.class.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
} class Out extends Thread { @Override
public void run() {
synchronized (Object.class) {
while (true) {
if (apple.size()>0) {
apple.remove(0);
System.out.println("拿一个苹果");
}
if (a == true) {
String.class.notify();
a = false;
}
if (apple.size() == 0) {
System.out.println("苹果没了,等待放入");
try {
b = true;
Object.class.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
}
}
public class GuoYuan { static boolean a = false;
static boolean b = false;
static List<Apple> apple = new ArrayList<>(); public static void main(String[] args) {
Put put = new GuoYuan().new Put();
Thread t = new Thread(put);
Out out = new GuoYuan().new Out();
Thread t2 = new Thread(out); t.start();
t2.start();
} class Put extends Thread { @Override
public void run() {
synchronized (String.class) {
while (true) {
while(a){
try {
String.class.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
} if(apple.size() == 0){
apple.add(new Apple());
System.out.println("----->添加苹果");
b = false;
System.out.println("----->唤醒out:" + apple.size());
}else{
a = true;
}
String.class.notifyAll();
}
}
}
} class Out extends Thread { @Override
public void run() {
synchronized (String.class) {
while (true) {
while(b){
try {
String.class.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
} if(apple.size()>0){
apple.remove(0);
System.out.println("拿出苹果");
a = false;
System.out.println("唤醒put苹果: "+ apple.size());
}else{
b = true;
}
String.class.notifyAll();
}
}
}
}
}