小编Sae*_*aee的帖子

Java 中的生产者-消费者多线程

我想用Java中的多线程等待和通知方法编写程序。
该程序有一个堆栈(最大长度 = 5)。生产者永远生成数字并将其放入堆栈中,消费者从堆栈中选取它。

当堆栈已满时,生产者必须等待,当堆栈为空时,消费者必须等待。
问题是它只运行一次,我的意思是一旦它产生 5 个数字,它就会停止,但我将 run 方法放在 while(true) 块中以不间断运行,但它没有。
这是我到目前为止所尝试的。
生产者类别:

package trail;
import java.util.Random;
import java.util.Stack;

public class Thread1 implements Runnable {
    int result;
    Random rand = new Random();
    Stack<Integer> A = new Stack<>();

    public Thread1(Stack<Integer> A) {
        this.A = A;
    }

    public synchronized void produce()
    {
        while (A.size() >= 5) {
            System.out.println("List is Full");
            try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        result = rand.nextInt(10);

        System.out.println(result + " produced ");
        A.push(result);
        System.out.println(A); …
Run Code Online (Sandbox Code Playgroud)

java multithreading producer-consumer notify wait

5
推荐指数
1
解决办法
3万
查看次数

标签 统计

java ×1

multithreading ×1

notify ×1

producer-consumer ×1

wait ×1