Java多线程学习之生产者消费者问题(一)
2017-07-03 22:25
513 查看
package javaapplication2; /** *生产者消费者问提 * 为使达到生产一个消费一个的目的,使用等待唤醒机制 * wait():该方法可以让线程处于冻结状态,并将线程存储到线程池中 * notify():唤醒指定线程池中的任意一个线程 * notifyAll():唤醒指定线程池中的所有线程 * 这些方法必须使用在同步中,因为它们用来操作同步锁上的线程状态 * 在使用这些方法时,必须标识它们所属的锁,标识方式就是 锁对象.wait() 锁对象.notify() 锁对象.notifyAll() * 相同锁的notify(),可以获取相同锁的wait(); * @author tf */ class Res { private String name; private int count; //定义标记 private boolean flag; //提供给商品赋值的方法 public synchronized void set(String name) { if(flag)//判断标记为true,执行wait等待,为false就生产 try{ wait();}catch (InterruptedException e){} this.name=name+"--"+count; count++; System.out.println(Thread.currentThread().getName()+"....生产者...."+this.name); //生产完毕,将标记改为true flag=true; //唤醒消费者 notify(); } //提供一个商品获取的方法 public synchronized void get() { if(!flag) try{ wait();}catch (InterruptedException e){} System.out.println(Thread.currentThread().getName()+"....消费者...."+this.name); //将标记改为false flag=false; //唤醒生产者 notify(); } } //生产者 class Producer implements Runnable { private Res r; Producer (Res r) { this.r=r; } public void run() { r.set("面包"); } } //消费者 class Consumer implements Runnable { private Res r; Consumer(Res r)//构造函数 { this.r =r; } public void run() { r.get(); } } public class JavaApplication2 { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here //创建资源 Res r=new Res(); //创建任务 Producer pro=new Producer(r); Consumer con=new Consumer(r); //创建线程 Thread t1=new Thread(pro); Thread t2=new Thread(con); t1.start(); t2.start(); } }
相关文章推荐
- JAVA学习第二十七课(多线程(六))- 多生产者多消费者问题(JDK1.5新特性)
- JAVA多线程学习--生产者消费者问题
- JAVA学习第二十七课(多线程(六))- 多生产者多消费者问题(JDK1.5新特性)
- java 多线程学习之多生产者多消费者产生的线程安全问题分析与解决:Lock和Condition
- java 多线程经典例子——生产者与消费者的问题
- 第九章 Java多线程机制 05_线程同步_7_生产者消费者问题
- 由生产者/消费者问题看JAVA多线程
- java多线程 生产者消费者问题
- 由生产者/消费者问题看JAVA多线程
- java多线程之生产者与消费者问题的简单模拟
- Java多线程之生产者消费者问题
- java多线程 生产者 消费者 问题 。。。
- 回顾生产者/消费者问题下产生的java多线程(一)
- Java基础学习6_多线程(线程间通信--生产者消费者)
- java例程练习(多线程综合练习[生产者-消费者问题])
- java例程练习(多线程综合练习[生产者-消费者问题])
- 用JAVA中的多线程示例生产者和消费者问题
- Java 线程同步问题 生产者-消费者 算法实现 -Java学习笔记(29)
- java多线程总结六:经典生产者消费者问题实现
- 由生产者/消费者问题看JAVA多线程