生产消费模型demo

package cn.com;

import java.util.Timer;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;

public class TestParalle {
public static void main(String[] args) throws InterruptedException {
ExecutorService pools = Executors.newFixedThreadPool(3);

    LinkedBlockingQueue<Integer> data = new LinkedBlockingQueue<Integer>(5);
    final Integer count = 30;
    pools.execute(new Runnable() {
        public void run() {
            try {
                for (int i = 0; i < count; i++) {
                    data.put(i);
                    System.out.println("生产数据" + i);
                    TimeUnit.SECONDS.sleep(1);
                }
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
                // e.printStackTrace();
            }
        }
    });

    pools.execute(new Runnable() {
        @Override
        public void run() {
            try {
                while (data.size() > 0) {
                    System.out.println("当前库存" + data.size() + "消费数据" + data.poll());
                    TimeUnit.SECONDS.sleep(2);
                }
            } catch (InterruptedException e) {
                // e.printStackTrace();
                Thread.currentThread().interrupt();
            }
        }
    });
    TimeUnit.MINUTES.sleep(3);
}

}
输出:
生产数据0
当前库存1消费数据0
生产数据1
生产数据2
当前库存2消费数据1
生产数据3
当前库存2消费数据2
生产数据4
生产数据5
当前库存3消费数据3
生产数据6
生产数据7
当前库存4消费数据4
生产数据8
生产数据9
当前库存5消费数据5
生产数据10
当前库存5消费数据6
生产数据11
当前库存5消费数据7
生产数据12
当前库存5消费数据8
生产数据13
当前库存5消费数据9
生产数据14
当前库存5消费数据10
生产数据15
当前库存5消费数据11
生产数据16
当前库存5消费数据12
生产数据17
当前库存5消费数据13
生产数据18
当前库存5消费数据14
生产数据19
当前库存5消费数据15
生产数据20
当前库存5消费数据16
生产数据21
当前库存5消费数据17
生产数据22
当前库存5消费数据18
生产数据23
当前库存5消费数据19
生产数据24
当前库存5消费数据20
生产数据25
当前库存5消费数据21
生产数据26
当前库存5消费数据22
生产数据27
当前库存5消费数据23
生产数据28
当前库存5消费数据24
生产数据29
当前库存5消费数据25
当前库存4消费数据26
当前库存3消费数据27
当前库存2消费数据28
当前库存1消费数据29

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值