ReentrantLock lock=new ReentrantLock();
class TestLock2 implements Runnable{
int ticketName=10;
//定义lock锁
private final ReentrantLock lock=new ReentrantLock();
wait(); //表示线程一直被等待直到其他线程通知,与sleep不同,会释放锁
wait(long timeout); 指定一个等待的时间
notify() ; 唤醒一个处于等待状态的锁
notifyAll(); 唤醒同一个对象所有调用wait();方法的线程,优先级别高的线程优先调度
线程通信
wait(); //表示线程一直被等待直到其他线程通知,与sleep不同,会释放锁
wait(long timeout); 指定一个等待的时间
notifyAll(); 唤醒同一个对象所有调用wait();方法的线程,优先级别高的线程优先调度
//线程通信
//生产者与消费者
public class TestPC {
public static void main(String[] args) {
SynContainer synContainer=new SynContainer();
new Productor(synContainer).start();
new Consumer(synContainer).start();
}
}
//被生产的食物
class Chicken{
public int id;
Chicken(int id){
this.id=id;
}
}
//生产者
class Productor extends Thread{
SynContainer synContainer;
Productor(SynContainer synContainer){
this.synContainer=synContainer;
}