步骤同一辈子产与一消费,区别在于测试类代码以下: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