java线程(18)——管程法,炸鸡生产者与消费者的案例
发布日期:2021-05-07 02:53:15 浏览次数:17 分类:精选文章

本文共 1851 字,大约阅读时间需要 6 分钟。

生产者与消费者的代码实现案例:管程法缓冲区解决方案

//案例:生产者消费者模型-->利用缓冲区解决:管程法public class TestPC {    public static void main(String[] args) {        SynContainer container = new SynContainer();        new Productor(container).start();        new Consumer(container).start();    }}//生产者类class Productor extends Thread {    SynContainer container;    public Productor(SynContainer container) {        this.container = container;    }    @Override    public void run() {        for (int i = 1; i < 101; i++) {            System.out.println("生产了第" + i + "只鸡");            container.push(new Chicken(i));        }    }}//消费者类class Consumer extends Thread {    SynContainer container;    public Consumer(SynContainer container) {        this.container = container;    }    @Override    public void run() {        for (int i = 1; i < 101; i++) {            System.out.println("消费了第" + container.pop().id + "只鸡");        }    }}//产品类class Chicken {    int id;    public Chicken(int id) {        this.id = id;    }}//缓冲区类class SynContainer {    Chicken[] chickens = new Chicken[10];    int count = 0;    public synchronized void push(Chicken chicken) {        if (count == 10) {            try {                this.wait();            } catch (InterruptedException e) {                e.printStackTrace();            }        }        chickens[count] = chicken;        count++;        this.notifyAll();    }    public synchronized Chicken pop() {        if (count == 0) {            try {                this.wait();            } catch (InterruptedException e) {                e.printStackTrace();            }        }        count--;        Chicken chicken = chickens[count];        this.notifyAll();        return chicken;    }}

this.wait和this.notifyAll需要在synchronized代码块中使用

this.wait与线程休眠的sleep方法类似,但是this.wait会释放锁,sleep不会
notify随机选择一个在指定对象上等待的线程激活
notifyAll激活指定对象上等待的所有线程

上一篇:java线程(19)——信号灯法,电视播放,生产者与消费者的案例
下一篇:java线程(17)——Lock锁,三个线程抢票加上lock锁后变成三个线程排队买票

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月09日 19时55分02秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章