日期:2014-05-20 浏览次数:20924 次
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class Queue {
List<Integer> Integers = new ArrayList<Integer>();
int maxSize = 4;
int count = 0;
public Queue() {
}
public synchronized void add(Integer e) {
if (Integers.size() == maxSize) {
try {
this.wait();
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
this.notifyAll();
if (Integers.size() < maxSize) {
System.out.println(Thread.currentThread().getName() + " " + e);
Integers.add(e);
count++;
}
}
public synchronized void remove() {
if (Integers.size() == 0) {
try {
this.wait();
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
this.notifyAll();
if (Integers.size() > 0) {
System.out.println(Thread.currentThread().getName() + " "
+ this.Integers.get(0));
Integers.remove(0);
}
}
public static void main(String args[]) {
Queue q = new Queue();
Create c = new Create(q);
PullOut po = new PullOut(q);
new Thread(c).start();
new Thread(po).start();
}
}
class Create implements Runnable {
String name = "生产者";
private Queue q;
public Create(Queue q) {
this.q = q;
}
@Override
public void run() {
int count = 0;
Random r = new Random();
while (count < 10) {
int number = r.nextInt() % 20;
q.add(number);
try {
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
count++;
}
}
}
class PullOut implements Runnable {
String name = "消费者";
private Queue q;
public PullOut(Queue q) {
this.q = q;
}
@Override
public void run() {
int count = 0;
while (count < 10) {
q.remove();
try {
Thread.sleep(800);
} catch (InterruptedException e) {
e.printStackTrace();
}
count++;
}
}
}