先写一个货物实体类。
public class Commondity {
int count = 50;
void Purchased(){
int Pnum = (int) ((Math.random()*50+50));
count = count + Pnum;
System.out.println(Pnum + " Purchased , " + count+" left");
}
void Sold(){
int Snum = (int ) (Math.random()*count+1);
count = count - Snum;
System.out.println(Snum + " Sold , " + count+" left");
}
}
购买线程类
public class Mark extends Thread {
Commondity c ;
public Mark(Commondity c) {
this.c = c;
}
@Override
public void run() {
while (true) {
synchronized (c) {
c.Sold();
if (c.count < 10) {
try {
c.notify();
c.wait();
sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
} else {
try {
sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
}
进货线程类
public class PurT extends Thread{
Commondity c ;
public PurT(Commondity c) {
this.c = c;
}
@Override
public void run() {
while (true){
synchronized (c) {
c.Purchased();
try {
c.notify();
c.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
Main测试
public class Main {
public static void main(String[] args){
Commondity c = new Commondity();
Mark m = new Mark(c);
PurT p =new PurT(c);
m.start();
p.start();
}
}