• 生产者和消费者


    package xianchencaozuo.demo;
    /*
     * 生产者和消费者案例
     * 问题1:由于多线程的原因,消费者在加入消息名称,还未加入消息内容,就切到了消费者线程,这样会将消息名称和上一个消息的内容
     * 加在一起
     * 为了解决这个问题,可以使用同步
     * 
     */
    //信息类,设置信息名,信息内容,获得信息名,信息内容
    class Info{
        private String infoname;
        private String infoconnet;
        public void setinfoname(String infoname){
            this.infoname = infoname;
        }
        public String getinfoname(){
            return infoname;
        }
        public void setinfoconnet(String infoconnet){
            this.infoconnet = infoconnet;
        }
        public String getinfoconnet(){
            return infoconnet;
        }
        
    }
    //生产者类实现runnable
    class product implements Runnable{
        //设置一个标志位
        private boolean flag = false;
        //product构造方法为属相赋值
        private Info info = null;
        public product (Info info){
            this.info = info;
        }
        public void run(){
            for (int i = 0; i < 50; i++) {
                if (flag) {
                    this.info.setinfoname("sophia ");
                    //在名称 和内容之间加入延迟
                    try{Thread.sleep(500);}
                     catch(Exception e){
                         System.out.println(e.getStackTrace());
                         }
                    this.info.setinfoconnet("欢迎老师");
                      //修改标志位
                    flag = false;
                }
                else {
                    this.info.setinfoname("测试开发 ");
                    //在名称 和内容之间加入延迟
                    try{Thread.sleep(500);}
                     catch(Exception e){
                         System.out.println(e.getStackTrace());
                         }
                    this.info.setinfoconnet("我要测试开发");
                      //修改标志位
                    flag = true;
                }
            }
        }
    }
    //消费者类
    class consumer implements Runnable{
        private Info info = null ;
        public consumer(Info info){
        this.info = info;
        }
        public void run(){
            for (int i = 0; i <50; i++) {
                //取信息名称 和信息内容,并加入延迟
                System.out.println(this.info.getinfoname());
                try{Thread.sleep(500);}
                 catch(Exception e){
                     System.out.println(e.getStackTrace());
                     }
                System.out.println(this.info.getinfoconnet());
            }
        }
    }
    //测试类
    public class ThreadCaseDemo {
    public static void main(String[] args) {
        Info in = new Info();
        product pd = new product(in);
        consumer cs = new consumer(in);
        new Thread(pd).start();
        new Thread(cs).start();
    }
    }
  • 相关阅读:
    用leangoo看板工具实施多团队大规模敏捷开发
    单团队的Scrum敏捷开发-leangoo
    放弃在每日站会上按成员逐个发言
    Leangoo思维导图做OKR目标管理
    好用的思维导图软件(程序员必备)
    好用免费的思维导图工具,多人协作共同编辑
    什么是Scrum燃尽图?
    Scrum中文网-团队需要Scrum Master做这六件事
    项目管理工具Leangoo自定义字段的应用
    实施敏捷开发中,选择看板管理工具的几个要点
  • 原文地址:https://www.cnblogs.com/yuanyuan2017/p/6944855.html
Copyright © 2020-2023  润新知