一辈子产与多消费:操做栈

步骤同一辈子产与一消费,区别在于测试类代码以下:java

public class Test {
    public static void main(String[] args) {
        MyStack myStack = new MyStack();
        Produce produce = new Produce(myStack);
        Consumer consumer1 = new Consumer(myStack);
        Consumer consumer2 = new Consumer(myStack);
        Consumer consumer3 = new Consumer(myStack);
        Consumer consumer4 = new Consumer(myStack);
        Consumer consumer5 = new Consumer(myStack);
        ThreadProduce threadProduce = new ThreadProduce(produce);
        ThreadConsumer threadConsumer1 = new ThreadConsumer(consumer1);
        ThreadConsumer threadConsumer2 = new ThreadConsumer(consumer2);
        ThreadConsumer threadConsumer3 = new ThreadConsumer(consumer3);
        ThreadConsumer threadConsumer4 = new ThreadConsumer(consumer4);
        ThreadConsumer threadConsumer5 = new ThreadConsumer(consumer5);
        threadProduce.start();
        threadConsumer1.start();
        threadConsumer2.start();
        threadConsumer3.start();
        threadConsumer4.start();
        threadConsumer5.start();
    }
}

注意:运行代码会出现数组越界异常数组

处理方法:将MyStack的push方法和pop方法中的“if”条件修改成“while”测试

再次运行代码spa

注意:运行代码后出现“假死”状况code

处理方法:将MyStack的push方法和pop方法中的notify()方法修改成notifyAll()方法class

相关文章
相关标签/搜索