24小时热门版块排行榜    

查看: 394  |  回复: 2
本帖产生 1 个 程序强帖 ,点击这里进行查看
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

sangzhipei1178

新虫 (小有名气)

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

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

» 猜你喜欢

石激声则鸣!人激志则宏!
已阅   回复此楼   关注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的回帖
查看全部 3 个回答

文俊点点

木虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
人懒了·······不想写·······自己百度·······有问题我可以改·······
这是你所拥有的时间·····这是你所能改变的生活·········
2楼2011-12-15 08:39:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 0703化学调剂 +8 妮妮ninicgb 2026-03-15 12/600 2026-03-19 05:55 by anny19840123
[考研] 26调剂/材料/英一数二/总分289/已过A区线 +7 步川酷紫123 2026-03-13 7/350 2026-03-18 17:12 by 尽舜尧1
[考研] 266求调剂 +5 阳阳哇塞 2026-03-14 9/450 2026-03-18 15:05 by stone_128
[考研] 298-一志愿中国农业大学-求调剂 +7 手机用户 2026-03-17 7/350 2026-03-18 14:34 by vgtyfty
[考研] 288求调剂,一志愿华南理工大学071005 +4 ioodiiij 2026-03-17 4/200 2026-03-18 12:36 by Linda Hu
[考研] 307求调剂 +3 冷笙123 2026-03-17 3/150 2026-03-18 09:55 by macy2011
[考研] 268求调剂 +6 简单点0 2026-03-17 6/300 2026-03-18 09:04 by 无际的草原
[考研] 308求调剂 +4 是Lupa啊 2026-03-16 4/200 2026-03-17 17:12 by ruiyingmiao
[考研] 材料与化工专硕调剂 +5 heming3743 2026-03-16 5/250 2026-03-17 14:03 by 勇敢太监王公公
[考研] 考研调剂 +3 淇ya_~ 2026-03-17 5/250 2026-03-17 09:25 by Winj1e
[考研] 一志愿,福州大学材料专硕339分求调剂 +3 木子momo青争 2026-03-15 3/150 2026-03-17 07:52 by laoshidan
[考研] 东南大学364求调剂 +5 JasonYuiui 2026-03-15 5/250 2026-03-16 21:28 by 木瓜膏
[考研] 333求调剂 +3 文思客 2026-03-16 7/350 2026-03-16 18:21 by 文思客
[考研] 085600调剂 +5 漾漾123sun 2026-03-12 6/300 2026-03-16 15:58 by 漾漾123sun
[考研] 085601材料工程315分求调剂 +3 yang_0104 2026-03-15 3/150 2026-03-15 10:58 by peike
[考研] 中科大材料专硕319求调剂 +3 孟鑫材料 2026-03-13 3/150 2026-03-14 18:10 by houyaoxu
[考研] 255求调剂 +3 李嘉慧, 2026-03-12 4/200 2026-03-14 16:58 by 有只狸奴
[考研] 328求调剂 +3 5201314Lsy! 2026-03-13 6/300 2026-03-14 15:31 by hyswxzs
[考研] 0817化学工程与技术考研312分调剂 +3 T123 tt 2026-03-12 3/150 2026-03-13 10:49 by houyaoxu
[考研] 333求调剂 +3 152697 2026-03-12 4/200 2026-03-13 07:08 by Iveryant
信息提示
请填处理意见