亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

工廠模式

標簽:
Android

public class Test {

    /**

     * 线程机制为了提高运行效率,当一个线程在不断的访问一个变量

     * 线程会使用一个私有空间 存储这个变量

     *

     * volatile 关键字 易变变量

     * 专门修饰被不同线程访问和修改的变量

     * 让线程访问这个变量 每次都从变量原地址读取

     * @param args

     */

    public static void main(String[] args){

        Object mutex = new Object();

        new Producer(mutex).start();

        new Consumer(mutex).start();

    }

    /**

     * 产品

     */

    static class Product{

        public volatile static String value = null;

    }

    /**

     * 消费者

     */

    static class Consumer extends Thread{

        private  Object mutex;

        public Consumer(Object mutex) {

            this.mutex = mutex;

        }

        @Override

        public void run() {

            //一直消费产品

            while (true){

               synchronized (mutex){

                   //如果还没生产出产品 等待生产出产品

                   if (null == Product.value){

//                    System.out.println("consumer :"+Product.value);

//                    Product.value = null;

                       try {

                           mutex.wait();

                       } catch (InterruptedException e) {

                           e.printStackTrace();

                       }

                   }

                   //使用

                   System.out.println("consumer :"+Product.value);

                   Product.value = null;

                   //通知生产者 可以生产了

                   mutex.notify();

               }

            }

        }

    }

    /**

     * 生产者

     */

    static class Producer extends Thread{

        private  Object mutex;

        public Producer(Object mutex) {

            this.mutex = mutex;

        }

        @Override

        public void run() {

            //生产 产品

            while (true){

                synchronized (mutex){

                    //如果没有产品就生产

                    if (null != Product.value){

                        try {

                            mutex.wait();

                        } catch (InterruptedException e) {

                            e.printStackTrace();

                        }

                    }

                    Product.value = "NO:"+System.currentTimeMillis();

                    System.out.println("producer ");

                    //通知消费者 可以消费了

                    mutex.notify();

                }

            }

        }

    }

}

原文链接:http://www.apkbus.com/blog-340477-76911.html

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消