JAVA线程同步生产者/消费者简单例子
来源:互联网 发布:windows编程入门书籍 编辑:程序博客网 时间:2024/05/18 01:41
public class TestProducerConsumer {
public static void main(String[] args) {
StoreRoom sr = new StoreRoom();
Producer p1 = new Producer(sr,"制造一部");
Producer p2 = new Producer(sr,"制造二部");
Consumer c1 = new Consumer(sr,"销售一部");
Consumer c2 = new Consumer(sr,"销售二部");
Thread t1 = new Thread(p1);
Thread t2 = new Thread(p2);
Thread t3 = new Thread(c1);
Thread t4 = new Thread(c2);
t1.start(); t2.start();t3.start(); t4.start();
}
}
class Product {
int id;
String producedBy;
String consumedBy;
Product(int id,String producedBy) {
this.id = id;
this.producedBy = producedBy;
}
public void consume(String consumedBy) {
this.consumedBy = consumedBy;
}
public String toString() {
return "该产品的,生产部门是:" + producedBy +",销售部门是:" + consumedBy;
}
public String getProducedBy() {
return producedBy;
}
public String getConsumedBy() {
return consumedBy;
}
public int getID() {
return this.id;
}
}
class StoreRoom {
Product[] pL = new Product[6];
int index = 0;
public synchronized void push(Product p) throws Exception {
while(index == pL.length) {
System.out.println(p.getProducedBy() + "仓库满了,请你歇歇稍等");
this.wait();
}
pL[index] = p;
index ++;
System.out.println(p.getProducedBy() + "已经生产了" + p.getID() +"个,销售部门快来取货卖");
notifyAll();
}
public synchronized Product pop(String s) throws Exception {
while(index == 0) {
System.out.println(s + " 仓库没货了,请你歇歇稍等");
this.wait();
}
index--;
Product product = pL[index];
product.consume(s);
System.out.println(s + "已经拿走了一个,制造部门赶快生产");
notifyAll();
return product;
}
}
class Producer implements Runnable{
StoreRoom sr;String s;
Producer(StoreRoom sr,String s) {
this.sr = sr;
this.s = s;
}
public void run() {
int i = 0;
while(true) {
i++;
Product p = new Product(i,s);
try{
sr.push(p);
}
catch(Exception e) {
}
}
}
}
class Consumer implements Runnable{
StoreRoom sr;String s;
Consumer(StoreRoom sr,String s) {
this.sr = sr;
this.s = s;
}
public void run() {
while(true) {
try{
sr.pop(s);
}
catch(Exception e) {
}
}
}
}
- JAVA线程同步生产者/消费者简单例子
- 学习和理解JAVA线程同步--生产者与消费者例子
- 学习和理解JAVA线程同步--生产者与消费者例子
- 线程同步 生产者消费者小例子
- 生产者、消费者 线程同步
- 线程同步--生产者消费者
- [java线程同步]生产者消费者问题demo
- Java Semaphore 生产者消费者线程同步
- Java生产者消费者例子
- java线程(三) 生产者消费者模式-线程同步问题
- java线程 (一)生产者消费者模式-线程同步问题
- 线程同步之生产者消费者
- 线程同步生产者消费者问题
- 线程同步-生产者消费者问题
- 生产者消费者看线程同步
- 线程同步--生产者消费者模式
- linux线程,生产者消费者例子
- java 线程生产者消费者
- 今天水木特快上的一个编程的题(解不但不唯一,而且算出成千上万个...)
- 极品飞车12 怎么一直甩尾!!!!!
- “世界因你不同”
- Symbian对话框之表单Form
- VC释放EXE资源文件
- JAVA线程同步生产者/消费者简单例子
- 关于用户体验,我们常犯的9个错误
- PHP shm_put_var()访问已释放资源漏洞
- STM32之RCC
- 关于误差,想到一个 整数规划问题
- inline内联函数—macro宏的替代
- 也谈google分页
- Prof-UIS学习
- 用google突破下载