Java线程笔记-生产者和消费者
Java线程笔记 1. 线程的介绍: Java中每一个对象都可以作为锁,这是synchronized实现同步的基础; 普通同步方法(实例方法),锁是当前实例对象 ,进入同步代码前要获得当前实例的锁; 静态同步方法,锁是当前类的class对象 ,进入同步代码前要获得当前类对象的锁; 同步方法块,锁是括号里面的对象,对给定对象加锁,进入同步代码库前要获得给定对象的锁; 2. synchronized 关键字; 关键字synchronized可以保证在同一时刻,只有一个线程可以执行某个方法或某个代码块;用于解决多线程共同操作共享数据的问题。 3. 方法介绍; wait() :当前线程进入等待状态,释放锁,停止执行wait() 方法后面的语句; notify() : notifyAll() : 通知所有等待相同资源的线程,不会立即释放锁,当前线程执行完后释放锁,即,notifyAll()通知发出后,需当前线程执行完后释放锁,其他等待的线程才能抢到资源; 4. 生产者-消费者实现方式一 (synchronized、wait和notify) 4.1 先定义一个资源池,用于存放线程共享资源,并提供生产、消费资源的方法 1 //定义一个资源池的类Resource 2 3 class Resource { 4 private int num = 0; 5 private int size =