线程通信,生产者消费者问题(Java)
2012-06-02 09:15
573 查看
在java中,使用wait()和notify()方法实现线程之间的通信,当线程被阻塞无法继续进行时,可以调用wait()方法,他的作用是使线程进入休眠状态,所有的资源被释放,允许其他线程使用,当一个线程释放某种资源时,可以调用notify()方法,使某个进入休眠状态的线程被唤醒,继续执行。notifyAll()可以将所有的线程唤醒,继续执行。
public class ProCus { /** * @param args */ public static void main(String[] args) { Operation p=new Operation(); new Thread(new Producer(p)).start(); new Thread(new Consumer(p)).start(); } } class Operation{ String name=""; Boolean bfull=false;//对于bfull可以进行设置,来确定仓库的容量是否满了 public synchronized void put(String name){ this.name=name; if(bfull) try{ wait(); Thread.sleep(1000); }catch(Exception e){} System.out.println(name+"生产一个产品"); bfull=true; notify(); } public synchronized void get(){ if(!bfull) try{ wait(); }catch(Exception e){} System.out.println("顾客取走一个产品"); bfull=false; notify(); } } //实现Runnable接口,run()方法是为程序中并发执行的线程建立的进入点 class Producer implements Runnable{ Operation p; public Producer(Operation p){ this.p=p; } public void run(){ int i=0; while(true){ if(i==0) p.put("Kellerman"); else p.put("Kim"); i=1-i; } } } class Consumer implements Runnable{ Operation p; public Consumer(Operation p){ this.p=p; } public void run(){ while(true){ p.get(); } } }
相关文章推荐
- java线程通信--生产者消费者问题
- Java线程间的相互通信--生产者消费者问题
- JAVA学习笔记(1)_____模拟线程通信之生产者消费者问题
- 【Java】线程wait() notify()通信 实现生产者 消费者问题
- Thinking in Java---线程通信+三种方式实现生产者消费者问题
- java 线程间通信,多生产者多消费者问题
- Java线程通信练习之“生产者/消费者问题”
- 线程通信,生产者消费者问题(Java)
- java基础12:线程间通信---生产者消费者问题
- Java线程间通信问题分析(生产者消费者模型)
- Java基础复习:线程通信、生产者消费者
- JAVA 线程间通信 -生产者消费者JDK5.0升级版
- Java-J2SE学习笔记-线程-生产者消费者问题
- Java线程之由生产者/消费者问题看线程同步与通信
- Java基础学习__多线程(线程间通信--生产者消费者JDK5.0升级版)
- 线程的相关知识、JAVA实现死锁、生产者消费者问题
- Java 多线程(二)线程间的通信应用--生产者消费者(未完)
- java生产者消费者问题(线程同步与线程等待的应用)
- java: 线程间通信经典模型“生产者-消费者”模型的实现
- Java线程(三):线程协作-生产者/消费者问题