1.wait()--释放锁等待
2.notifyAll()--唤醒线程
class TestSynchronized{
public static void Main(String[] agrs){
new producer().start();
new coustomer ().start();
}
//产品
class Item{
public int id;//产品id
//产品信息
}
//仓库
class Factory{
List <Item> list = new ArrayList<Item>();
private int maxNum = 10;//仓库容量
public synchronized void pop(Item it){
//产品消费没了
if (list.length == 0){
this.wait();//trycatch
}
list.remove(it);
this.notifyAll();
}
public synchronized void push(Item it){
if (list.length == maxNum){
this.wait()//
}
list.add(it);
this.notifyAll();
}
}
//生产者
class producer extends Thread{
Factory factory;
public producer (Factory factory){
this.factory = factory ;
}
public void run(){
for(int i=1;i<100;i++){
factory.push(new Item());
System.ou,println("消费第"+i+"商品");
}
}
//消费者
class coustomer extends Thread{
Factory factory;
public coustomer(Factory factory){
this.factory = factory ;
}
public void run(){
for(int i=1;i<100;i++){
factory.pop()
System.ou,println("消费第"+i+"商品");
}
}