首页 > 代码库 > 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(); } }}
java多线程生产者消费者
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。