首页 > 代码库 > java多线程生产者消费者

java多线程生产者消费者

//Java Thread  producer customerclass 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

 


java多线程生产者消费者