zoukankan      html  css  js  c++  java
  • 生产者消费者synchronized wait notify

    package ProduceQueueProduce;

    import java.util.Queue;

    public class ProducerThread extends Thread {
    public static Queue<Object> q;
    private int eleNum =15;
    @Override
    public void run(){
    while(true){
    try {
    Thread.sleep(10);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    produce();
    }
    }

    private void produce() {
    synchronized(q){
    while(q.size() == eleNum){
    try {
    q.wait();
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    q.add(new Object());
    System.out.println(Thread.currentThread().getName()+"生产者队列大小:"+ q.size());
    q.notifyAll();
    }
    }


    public ProducerThread(String name) {
    super(name);
    }
    }
    package ProduceQueueProduce;

    import java.util.Queue;

    public class ConsumerThread extends Thread {
    public static Queue<Object> q;
    @Override
    public void run(){
    while(true){
    try {
    Thread.sleep(100);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    consume();
    }
    }

    private void consume() {
    synchronized(q){
    while(q.size() == 0){
    try {
    q.wait();
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    q.remove();
    System.out.println(Thread.currentThread().getName()+"消费者队列大小:"+q.size());
    q.notifyAll();
    }
    }


    public ConsumerThread(String name) {
    super(name);
    }
    }

    package ProduceQueueProduce;

    import java.util.ArrayDeque;
    import java.util.Queue;


    public class Test {
    public static Queue<Object> q = new ArrayDeque<>();
    public static void main(String args[]) throws InterruptedException {
    ConsumerThread c = new ConsumerThread("c");
    ProducerThread p = new ProducerThread("p");
    ProducerThread.q=q;
    ConsumerThread.q = q;
    p.start();
    c.start();

    }
    }





  • 相关阅读:
    BZOJ4346 : [POI2016]Nadajniki
    BZOJ4345 : [POI2016]Korale
    BZOJ4134 : ljw和lzr的hack比赛
    BZOJ4342 : CF348 Pilgrims
    BZOJ2310 : ParkII
    BZOJ3322 : [Scoi2013]摩托车交易
    BZOJ1444 : [Jsoi2009]有趣的游戏
    Xcode8中处理打印日志的配置
    iOS开发之记录用户登录状态
    热修复
  • 原文地址:https://www.cnblogs.com/mlz-2019/p/9545748.html
Copyright © 2011-2022 走看看