20分 请教 :java 生产者 消费者 问题。

来源:百度知道 编辑:UC知道 时间:2024/07/04 23:05:47
多线程高手帮我看下错误出在哪里 怎么改 怎么老出现数组越界啊。 我是有明确判断边界的语句么 例如:
if (i <= 0) {
System.out.println("篮子空了" + i);
this.wait();
}

if (i >= 6) {
System.out.println("篮子满了" + i);
this.wait();
}

package test2;

public class TestProductAndConsumer {

public static void main(String[] args) {
Basket b = new Basket();
new Thread(new Customer(b)).start();
new Thread(new Customer(b)).start();
// new Thread(new Customer(b)).start();
new Thread(new Producer(b)).start();
new Thread(new Producer(b)).start();
new Thread(new Producer(b)).start();
}
}

// 生产者
class Customer implements Runnable {
private Basket b;

public Customer() {
};

public Customer(Basket b) {
this.b = b;
}

public void run() {
try {
while (true) {
b.getG();
}

个人觉得问题出在生产包子的时候,我认为生产包子应该在producer的run方法中也就是把putg中的new goods方法放到run方法里面 我有一个生产者与消费者的问题,你可以百度hi我,希望能帮到你

if (i >= 6) {
System.out.println("篮子满了" + i);
this.wait();
}
Thread.sleep(500);
arr[i] = new Goods();
把等号去掉,数组是从0开始,到5结束

public synchronized void getG() throws InterruptedException {
if (i <= 0) {
System.out.println("篮子空了" + i);
this.wait();
}
将里面的if换成While()试试