Java多线程(生产者与消费者示例)

发布时间:2012-05-26 07:44:29   来源:文档文库   
字号:

package com.gzrj.lesson4.product;

public class TestProducerConsumer {

public static void main(String[] args) {

Basket basket = new Basket();

Producer producer = new Producer(basket);

Consumer consumer = new Consumer(basket);

Thread thread = new Thread(producer);

Thread thread2 = new Thread(consumer);

thread.start();

thread2.start();

}

}

class Bread{

private int id;

public Bread(int id){

this.id = id;

}

@Override

public String toString() {

return "面包"+id;

}

}

class Basket{

private Bread[] breads = new Bread[6];

private int index = 0;

public synchronized void push(Bread bread){

if(index == breads.length){

try {

this.wait();

} catch (InterruptedException e) {

e.printStackTrace();

}

}

breads[index] = bread;

index++;

System.out.println("生产了"+bread);

this.notify();

}

public synchronized void pop(){

try {

Thread.sleep(1);

} catch (InterruptedException e1) {

e1.printStackTrace();

}

if(index == 0){

try {

this.wait();

} catch (InterruptedException e) {

e.printStackTrace();

}

}

index--;

Bread bread = breads[index];

System.out.println("消费了"+bread);

this.notify();

}

}

class Producer implements Runnable{

private Basket basket;

public Producer(Basket basket){

this.basket = basket;

}

public void run() {

for(int i=0;i<20;i++){

Bread bread = new Bread(i);

basket.push(bread);

}

}

}

class Consumer implements Runnable{

private Basket basket;

public Consumer(Basket basket){

this.basket = basket;

}

public void run() {

for(int i=0;i<20;i++){

basket.pop();

}

}

}

本文来源:https://www.2haoxitong.net/k/doc/eb963d18650e52ea551898d8.html

《Java多线程(生产者与消费者示例).doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式