继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

工厂模式

一只名叫tom的猫
关注TA
已关注
手记 501
粉丝 62
获赞 330

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

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP