码迷,mamicode.com
首页 > 编程语言 > 详细

java多线程生产者消费者

时间:2014-11-21 01:26:41      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   os   sp   java   

bubuko.com,布布扣
//Java Thread  producer customer
class ThreadTest
{
     public static void main(String[] args)
     {
         Q q=new Q();
         
         Producer p=new Producer(q);
         Customer c=new Customer(q);
         Thread t0=new Thread(p);
         Thread t1=new Thread(c);
         t0.start();
         t1.start();
         
         for(int i=0;i<50;i++)
         {
             if(i==25)
             {
                p.stop();
                c.stop();
             }
             
             System.out.println(Thread.currentThread().getName());
         }
     }
}

class Q
{
     String name="empty";
     String gender="empty";
     boolean isEmpty=true;
     
     public synchronized void Put(String name,String gender)
     {
        if (!isEmpty) {
            try {wait();} catch (Exception ex) {}
        }
        this.name = name;
        try {Thread.sleep(1);} catch (Exception ex) {}
        this.gender = gender;
        isEmpty = false;
        notify();
     }

     public synchronized void Get()
     {
         if(isEmpty)
         {
             try{wait();}catch(Exception ex){}
         }
         System.out.println("name:"+this.name+"__gender:"+this.gender);
         isEmpty=true;
         notify();
     }
}

class Producer implements Runnable
{
    Q q;
    boolean isStop=false;
    public void stop()
    {
        this.isStop=true;
    }
    public Producer(Q q)
    {
        this.q=q;
    }

    public void run() {
        int i = 0;
        while (!isStop) {
            if (i == 0) {
                q.Put("Tim", "male");

            } else {
                q.Put("Lian", "female");
            }
            i = (i + 1) % 2;
        }
    }
}

class Customer implements Runnable
{
    Q q;
    boolean isStop=false;
    public void stop()
    {
        this.isStop=true;
    }
    public Customer(Q q)
    {
        this.q=q;
    }
    public void run()
    {
        while(!isStop)
        {
            q.Get();
        }
    }
}
View Code

 


bubuko.com,布布扣

java多线程生产者消费者

标签:style   blog   http   io   ar   color   os   sp   java   

原文地址:http://www.cnblogs.com/tim-li/p/3395637.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!