博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA多线程通信
阅读量:5340 次
发布时间:2019-06-15

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

JAVA多线程通信

package com.frank.thread;/**    * author:pengyan     * date:Jun 16, 2011     * file:ProducerAndCustomerTest.java    */  public class ProducerAndCustomerTest {	public static void main(String[] args) {		//create an object 		Queue q=new Queue();		Productor p=new Productor(q);		Customer c=new Customer(q);		//p and c shared q		p.start();		c.start();	}}class Customer extends Thread{	Queue q;	public Customer(Queue q) {		this.q=q;	}	@Override	public void run() {		while (q.value<10) {//get the value			System.out.println("Customer get "+q.get());		}	}}class Productor extends Thread{	Queue q;	public Productor(Queue q) {		this.q=q;	}	@Override	public void run() {		for (int i = 1; i <=10; i++) {			q.put(i);//product and show info			System.out.println("Productor put "+i);		}	}}class Queue{	int value;//count the mumber	boolean bFull=false;//whether the cup is full	public synchronized void  put(int i){		if (!bFull) {			value=i;//fill the cup 			bFull=true;//it is full			notifyAll();//notify other thread			try {				wait();//wait.......			} catch (InterruptedException e) {				e.printStackTrace();			}		}	}	public synchronized int get(){		if (!bFull) {			try {				wait();//if not full,wait until full			} catch (InterruptedException e) {				e.printStackTrace();			}		}		bFull=false;//after got the cup is empty		notifyAll();//notify the Productor to put		return value;//return the value	}}
 

控制台打印:

Productor put 1

Customer get 1

Customer get 2

Productor put 2

Customer get 3

Productor put 3

Customer get 4

Productor put 4

Customer get 5

Productor put 5

Productor put 6

Customer get 6

Productor put 7

Customer get 7

Customer get 8

Productor put 8

Customer get 9

Productor put 9

Customer get 10

Productor put 10

转载于:https://www.cnblogs.com/pengyan5945/p/5218370.html

你可能感兴趣的文章
模拟Post登陆带验证码的网站
查看>>
NYOJ458 - 小光棍数
查看>>
java中常用方法
查看>>
【Programming Clip】06、07年清华计算机考研上机试题解答(个别测试用例无法通过)...
查看>>
canvas动画
查看>>
4,7周围玩家
查看>>
关于webpack升级过后不能打包的问题;
查看>>
vue - 生命周期
查看>>
Python正则表达式
查看>>
Linux进程间通信--命名管道
查看>>
UVa 10970 - Big Chocolate
查看>>
js输出
查看>>
H5多文本换行
查看>>
HAL层三类函数及其作用
查看>>
Odoo 去掉 恼人的 "上午"和"下午"
查看>>
web@h,c小总结
查看>>
java编程思想笔记(一)——面向对象导论
查看>>
Data Structure 基本概念
查看>>
Ubuntu改坏sudoers后无法使用sudo的解决办法
查看>>
NEYC 2017 游记
查看>>