24小时热门版块排行榜    

Znn3bq.jpeg
查看: 403  |  回复: 2
本帖产生 1 个 程序强帖 ,点击这里进行查看

sangzhipei1178

新虫 (小有名气)

[求助] 用缓冲区实现消费者机制

用缓冲区实现生产者消费者问题,设置一个缓冲区 然后生产者生产的物品放进去 再由消费者从缓冲区中取走,如果缓冲区为空则消费者进程阻塞 等待 由生产者生产后 缓冲区不为空 才可取走,若缓冲区已满 则生产进程阻塞等待.要一个可以运行的java程序
回复此楼

» 猜你喜欢

石激声则鸣!人激志则宏!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

文俊点点

木虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
人懒了·······不想写·······自己百度·······有问题我可以改·······
这是你所拥有的时间·····这是你所能改变的生活·········
2楼2011-12-15 08:39:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

qqhegg

荣誉版主 (文坛精英)

珊瑚小美-----小元家的九妹

优秀版主优秀版主

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
微尘、梦想(金币+2, 程序强帖+1): 好久不见,有心了,祝好~ 2011-12-16 12:13:49
sangzhipei1178(金币+70): xiexie 2011-12-19 23:43:25
看一下可不可以,找人帮你写的呵呵呵
package thread;

class ShareData   
{   
        private char c;     
        private boolean isProduced = false; // 信号量   
       
        public synchronized void putShareChar(char c)  // 同步方法putShareChar()   
        {   
                if (isProduced)     // 如果产品还未消费,则生产者等待   
                {     
                        try   
                        {   
                                wait();        // 生产者等待   
                        }catch(InterruptedException e){   
                                e.printStackTrace();   
                        }   
                }   
                this.c = c;     
                isProduced = true;   // 标记已经生产   
                notify();             // 通知消费者已经生产,可以消费   
        }   
       
        public synchronized char getShareChar()  // 同步方法getShareChar()   
        {   
                if (!isProduced)    // 如果产品还未生产,则消费者等待   
                {      
                        try   
                        {   
                                wait();       // 消费者等待   
                        }catch(InterruptedException e){   
                                e.printStackTrace();   
                        }     
                }   
                isProduced = false; // 标记已经消费   
                notify();            // 通知需要生产   
                return this.c;   
        }   
}  


class Producer extends Thread     // 生产者线程   
{     
        private ShareData s;   
        Producer(ShareData s)   
        {   
                this.s = s;   
        }   
        public void run()   
        {   
                for (char ch = 'A'; ch <= 'D'; ch++)   
                {   
                        try   
                        {   
                                Thread.sleep((int)(Math.random()*3000));   
                        }catch(InterruptedException e){   
                                e.printStackTrace();   
                        }   
                        s.putShareChar(ch);  // 将产品放入仓库   
                        System.out.println(ch + " is produced by Producer.";   
                }   
        }   
}


class Consumer extends Thread    // 消费者线程   
{   
        private ShareData s;   
        Consumer(ShareData s)   
        {   
                this.s = s;   
        }   
        public void run()   
        {   
                char ch;   
                do{   
                        try   
                        {   
                                Thread.sleep((int)(Math.random()*3000));   
                        }catch(InterruptedException e){   
                                e.printStackTrace();   
                        }   
                        ch = s.getShareChar();    // 从仓库中取出产品   
                        System.out.println(ch + " is consumed by Consumer. ";   
                }while (ch != 'D');   
        }   
}  

public class CommunicationDemo   
{   
        public static void main(String[] args)   
        {   
                ShareData s = new ShareData();   
                new Consumer(s).start();   
                new Producer(s).start();   
        }   
}
每天都是新的一天,每天上帝都会给你不同的惊喜
3楼2011-12-16 11:11:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 sangzhipei1178 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考博] 湖南大学刘巧玲课题组2026年第二批次博士研究生招生信息 +3 南风观火 2026-04-18 3/150 2026-04-19 21:44 by 淡雅人生27
[考博] 申博自荐 +4 Linxia林夏 2026-04-13 4/200 2026-04-19 19:55 by Equinoxhua
[考研] 294求调剂 +8 淡然654321 2026-04-17 9/450 2026-04-19 19:51 by Equinoxhua
[考研] 304求调剂 +8 castLight 2026-04-16 8/400 2026-04-19 17:14 by 中豫男
[考研] 求调剂推荐 +9 小聂爱学习 2026-04-14 9/450 2026-04-19 17:03 by 中豫男
[考研] 求调剂 +10 小聂爱学习 2026-04-16 12/600 2026-04-19 16:51 by 中豫男
[考研] 291求调剂 +12 关忆北. 2026-04-14 13/650 2026-04-19 16:50 by 中豫男
[考研] 085404 22408 309分求调剂 +10 lzmk 2026-04-14 11/550 2026-04-19 16:42 by 中豫男
[考研] 320求调剂 +5 深郊akm 2026-04-17 5/250 2026-04-18 19:52 by 王珺璞
[考研] 接受任何调剂 +6 也就是栗子 2026-04-17 7/350 2026-04-18 17:20 by 涵竹刘
[考研] 297,工科调剂? +5 河南农业大学-能 2026-04-14 5/250 2026-04-18 15:17 by Equinoxhua
[考研] 收到复试调剂但是去不了 +8 小蜗牛* 2026-04-16 8/400 2026-04-18 11:15 by zixin2025
[考研] 260求调剂 +4 Zyt1314520.. 2026-04-17 5/250 2026-04-18 08:28 by babysonlkd
[考博] 申博/考博 +3 啃面包的小书虫 2026-04-17 4/200 2026-04-17 23:54 by 阳阳阳^_^
[有机交流] 二苯甲酮酸类衍生物 50+3 小白爱主人 2026-04-17 6/300 2026-04-17 18:47 by kf2781974
[考研] 一志愿沪9,生物学326求调剂 +9 刘墨墨 2026-04-15 9/450 2026-04-16 17:14 by 崔崔崔cccc
[考研] 各位老师好,求调剂,本科211,一志愿天津大学生物与医药学硕,差两名录取。 +11 路六六jjj 2026-04-13 11/550 2026-04-14 16:01 by zs92450
[教师之家] 转长聘了 +7 简单化xn 2026-04-13 7/350 2026-04-14 14:50 by xindong
[考研] 245求调剂 +6 冰糖橘?汽水 2026-04-13 10/500 2026-04-14 10:49 by jyl0317
[考研] 085600材料与化工329分求调剂 +24 叶zilin 2026-04-13 25/1250 2026-04-14 09:20 by 试管破裂
信息提示
请填处理意见