生产者/消费者问题、线程池笔记
生产者消费者共享统一资源,两者之间相互依赖、互为条件。
wait()
线程等待,知道其他线程释放锁;
wait(long timeout)
等待指定毫秒数;
notify()
唤醒一个处于等待队列的线程;
notifyAll()
唤醒同一对象上所有调用wait()方法的线程,优先级搞得线程优先调度;
注意:均是Object类的方法,都只能在同步方法或同步代码块中使用,否则会抛出异常
llegalMonitorStateException
.
管程法
package com.company;
//测试:生产者消费者模型----> 管程解决
import oracle.jrockit.jfr.ProducerDescriptor;
import java.sql.SQLOutput;
import java.util.function.Consumer;
public class TestPC {
public static void main(String[] args) {
SynContainer container = new SynContainer();
new Producter(container).start();
new Comsumers(container).start();
}
}
//生产者
class Producter extends Thread {
SynContainer container;//生产者有一个容器;
Producter(SynContainer synContainer){//构造时传入容器
this.container=synContainer;
}