zoukankan      html  css  js  c++  java
  • Java 单生产者消费者问题

    package com.cwcec.test;
    
    class Resource
    {
        private int count = 0;
        private boolean flag = false;
        
        public synchronized void set(int count)
        {
            if(flag)
            {
                try {
                    this.wait();
                } catch (InterruptedException e) {
                    // TODO 自动生成的 catch 块
                    e.printStackTrace();
                }
            }
            this.count = count;
            flag = true;
            System.out.println(Thread.currentThread().getName() + "...生产者..." + count);
            this.notify();
        }
        
        public synchronized void out()
        {
            if(!flag)
            {
                try {
                    this.wait();
                } catch (InterruptedException e) {
                    // TODO 自动生成的 catch 块
                    e.printStackTrace();
                }
            }
            System.out.println(Thread.currentThread().getName() + "...消费者..." + count);
            flag = false;
            this.notify();
        }
        
    }
    
    class Producer implements Runnable
    {
        private Resource r;
        public Producer(Resource r)
        {
            this.r = r;
        }
        
        public void run()
        {
            int x = 0;
            while(true)
            {
                r.set( ++x);    
            }
        }
    }
    
    class Customer implements Runnable
    {
        Resource r;
        public Customer(Resource r)
        {
            this.r = r;
            
        }
        
        public void run()
        {
            while(true)
            {
                r.out();
            }
        }
    }
    
    public class Person {
    
        public static void main(String[] args) {
            // TODO 自动生成的方法存根
            Resource r = new Resource();
            Producer p = new Producer(r);
            Customer c = new Customer(r);
            
            Thread t1 = new Thread(p);
            Thread t2 = new Thread(c);
            
            t1.start();
            t2.start();
        }
    }
    Output
    Thread-0...生产者...61498
    Thread-1...消费者...61498
    Thread-0...生产者...61499
    Thread-1...消费者...61499
    Thread-0...生产者...61500
    Thread-1...消费者...61500
    Thread-0...生产者...61501
    Thread-1...消费者...61501
    Thread-0...生产者...61502
    Thread-1...消费者...61502
    Thread-0...生产者...61503
    Thread-1...消费者...61503
  • 相关阅读:
    Python解释器【转载】
    Python第一行代码
    Hive安装部署
    Python 3.6安装教程
    Spark安装部署
    Code:Blocks中文输出乱码解决方法
    HBase集群安装部署
    Hadoop集群时间同步
    ZooKeeper安装部署
    Linux重置mysql密码
  • 原文地址:https://www.cnblogs.com/xiarongjin/p/8309044.html
Copyright © 2011-2022 走看看