24小时热门版块排行榜    

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

sangzhipei1178

新虫 (小有名气)

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

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

» 猜你喜欢

石激声则鸣!人激志则宏!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖置顶 ( 共有1个 )

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的回帖
普通回帖

文俊点点

木虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
人懒了·······不想写·······自己百度·······有问题我可以改·······
这是你所拥有的时间·····这是你所能改变的生活·········
2楼2011-12-15 08:39:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 sangzhipei1178 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 267一志愿南京工业大学0817化工求调剂 +8 SUICHILD 2026-03-12 8/400 2026-03-18 20:55 by winsuccess
[考研] 0703化学调剂 +7 妮妮ninicgb 2026-03-15 11/550 2026-03-18 19:48 by macy2011
[考研] 26调剂/材料/英一数二/总分289/已过A区线 +7 步川酷紫123 2026-03-13 7/350 2026-03-18 17:12 by 尽舜尧1
[考研] 085601专硕,总分342求调剂,地区不限 +5 share_joy 2026-03-16 5/250 2026-03-18 14:48 by haxia
[考研] 280求调剂 +6 咕噜晓晓 2026-03-18 7/350 2026-03-18 11:25 by 无际的草原
[考研] 303求调剂 +4 睿08 2026-03-17 6/300 2026-03-18 11:01 by Iveryant
[考研] 0703化学调剂 +3 妮妮ninicgb 2026-03-17 3/150 2026-03-18 10:29 by macy2011
[考研] 296求调剂 +5 大口吃饭 身体健 2026-03-13 5/250 2026-03-17 21:05 by 不惑可乐
[考研] 材料与化工求调剂 +6 为学666 2026-03-16 6/300 2026-03-17 20:15 by peike
[考研] 301求调剂 +4 A_JiXing 2026-03-16 4/200 2026-03-17 17:32 by ruiyingmiao
[考研] 326求调剂 +5 上岸的小葡 2026-03-15 6/300 2026-03-17 17:26 by ruiyingmiao
[考研] 283求调剂 +3 听风就是雨; 2026-03-16 3/150 2026-03-17 07:41 by 热情沙漠
[考研] [导师推荐]西南科技大学国防/材料导师推荐 +3 尖角小荷 2026-03-16 6/300 2026-03-16 23:21 by 尖角小荷
[考研] 333求调剂 +3 文思客 2026-03-16 7/350 2026-03-16 18:21 by 文思客
[考研] 304求调剂 +3 曼殊2266 2026-03-14 3/150 2026-03-16 16:39 by houyaoxu
[考研] 070305求调剂 +3 mlpqaz03 2026-03-14 4/200 2026-03-15 11:04 by peike
[考研] 本科南京大学一志愿川大药学327 +3 麦田耕者 2026-03-14 3/150 2026-03-14 20:04 by 外星文明
[考研] 308 085701 四六级已过求调剂 +7 温乔乔乔乔 2026-03-12 14/700 2026-03-14 10:49 by JourneyLucky
[考研] 考研调剂 +4 芬达46 2026-03-12 4/200 2026-03-13 16:04 by ruiyingmiao
[考研] 290求调剂 +3 ADT 2026-03-13 3/150 2026-03-13 10:19 by peike
信息提示
请填处理意见