博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA_Thread_生产消费模式
阅读量:6278 次
发布时间:2019-06-22

本文共 1482 字,大约阅读时间需要 4 分钟。

package com.kk.thread; public class Test {
public static void main(String[] args) {
Queue q=new Queue(); Producer p=new Producer(q); Consumer c=new Consumer(q); c.start(); p.start(); } } class Producer extends Thread {
Queue q; public Producer(Queue q) {
this.q=q; } public void run() {
for (int i = 0; i < 10; i++) {
q.put(i); System.out.println("q.put(i)=="+i); } } } class Consumer extends Thread {
Queue q; public Consumer(Queue q) {
this.q=q; } public void run() {
while(true) System.out.println("q.get(i)=="+q.get()); } } class Queue {
int i; boolean bFull; public synchronized void put(int i) {
if(!bFull){ //如果队列里面没有值 this.i = i; //给队列添加值 bFull=true; //设置为有值 notify(); //唤醒等待队列 } try {
wait(); //无论有没有进入if ,此时bFull为true,表示有值,则线程等待,让Consumer取。 } catch (InterruptedException e) {
e.printStackTrace(); } } public synchronized int get() {
if(!bFull){
//如果bFull没有值 try {
wait();//则让线程等待,让Producer放入值 } catch (InterruptedException e) {
e.printStackTrace(); } } notify(); //此时表示bFull里面有值,要唤醒Pruducer继续放入值 bFull=false; //设置bFull为没有值,因为后面将会取走i的值 return i; } }

转载于:https://www.cnblogs.com/BigIdiot/archive/2011/12/16/2290440.html

你可能感兴趣的文章
Netty 备录 (一)
查看>>
netfilter 五个表五个链介绍,iptables案例
查看>>
Ubuntu服务器界面认识及创建用户
查看>>
网站如何防止sql注入攻击
查看>>
【TeeChart .NET教程】(四)轴控制
查看>>
关于SBR3U30P1-7你必须知道的
查看>>
Linux防火墙-firewalled
查看>>
爬虫获取网页,出现乱码问题
查看>>
再有人问你Java内存模型是什么,就把这篇文章发给他
查看>>
控制台程序隐藏方法总结(四种)
查看>>
nginx负载均衡
查看>>
企业能源管理系统的基本要求和主要内容
查看>>
JAVA基础学习之-AQS的实现原理分析
查看>>
IT兄弟连 JavaWeb教程 监听器4
查看>>
[喵咪BELK实战(3)] logstash+filebeat搭建
查看>>
线程中无法注入bean
查看>>
jetty的xml配置文件
查看>>
Hyper-V:虚拟网络配置
查看>>
按位运算符操作
查看>>
java8对接口的改变
查看>>