Java 生产者消费者 多线程 toys
来源:互联网 发布:淘宝客服礼貌用语 编辑:程序博客网 时间:2024/05/19 01:14
Main.java
public class Main { public static void main(String[] args) { Channel channel = new Channel(); new Thread(new Producer("生产者1", channel)).start(); new Thread(new Producer("生产者2", channel)).start(); new Thread(new Customer("消费者1", channel)).start(); }}
Channel.java
import java.util.LinkedList;import java.util.Queue;/** * 消费通道 * Created by Wiki on 16/1/28. */public class Channel { private Queue<Good> goodList = new LinkedList<>(); public synchronized Good get() { if (goodList.size() == 0) { return null; } Good good = goodList.remove(); return good; } public synchronized void put(Good good) { goodList.add(good);// notifyAll(); notify(); }}
Good.java
/** * 商品 * Created by Wiki on 16/1/28. */public class Good { private String name; public Good(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; }}
Produce.java
import java.util.Random;/** * 生产者 * Created by Wiki on 16/1/28. */public class Producer implements Runnable { private static volatile int goodNumber = 0; private String name; private Channel channel; public Producer(String name, Channel channel) { this.name = name; this.channel = channel; } @Override public void run() { while (true) { int sleep = new Random().nextInt(2000); try { Thread.sleep(sleep); } catch (InterruptedException e) { e.printStackTrace(); } Good good = new Good("商品-编号" + (++goodNumber)); System.out.println(name + " 生产商品:" + good.getName()); channel.put(good); } }}
Consumer.java
/** * 消费者 * Created by Wiki on 16/1/28. */public class Customer implements Runnable { private String name; private Channel channel; public Customer(String name, Channel channel) { this.name = name; this.channel = channel; } @Override public void run() { while (true) { Good good = channel.get(); if (good != null) { System.out.println(name + " 获得商品:" + good.getName()); } else { synchronized (channel) { try { System.out.println(name + " 进入等待"); channel.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } } }}
0 0
- Java 生产者消费者 多线程 toys
- java多线程 消费者-生产者
- java多线程 消费者-生产者
- java 多线程 生产者消费者
- JAVA [ 多线程 -- 生产者消费者 ]
- Java 多线程-生产者、消费者
- java多线程--生产者消费者
- java多线程-生产者消费者
- Java多线程生产者消费者
- java多线程-生产者消费者
- java多线程 生产者与消费者
- java多线程 ----生产者消费者模式
- java多线程 生产者消费者问题
- java多线程 生产者 消费者 问题 。。。
- 生产者消费者Java多线程实现
- java生产者消费者多线程同步
- <JAVA>多线程-生产者消费者例子
- java多线程生产者、消费者模型
- jsp 基础知识
- 类加载器和双亲委托机制
- Java设计模式----代理模式
- 打破思考的定式:
- Codeforces 749C【模拟】
- Java 生产者消费者 多线程 toys
- android内置测拉栏DrawerLayout的使用
- c++基础
- OpenGL环境配置
- 【Android】可移动的ImageView
- 数据源配置
- LintCode41:最大子数组
- 机器学习中的偏差(bias)和方差(variance)
- 产品被批,随便写俩字