1:建立栈代码以下java
public class MyStack { private List list = new ArrayList(); synchronized public void push() { try { if (list.size() == 1) { this.wait(); } list.add("anyString = " + Math.random()); this.notify(); System.out.println("push = " + list.size() + " value = " + list.get(0)); } catch (InterruptedException e) { e.printStackTrace(); } } synchronized public String pop() { String returnValue = ""; try { if (list.size() == 0) { System.out.println("pop操做中的:" + Thread.currentThread().getName() + " 线程呈wait状态"); this.wait(); } returnValue = "" + list.get(0); System.out.println("pop操做中的:" + Thread.currentThread().getName() + "栈中的值:" + returnValue); list.remove(0); this.notify(); System.out.println("pop操做中的:" + Thread.currentThread().getName() + "消费结束"); } catch (InterruptedException e) { e.printStackTrace(); } return returnValue; } }
2:建立生产者服务类dom
public class Produce { private MyStack myStack; public Produce(MyStack myStack) { this.myStack = myStack; } public void pushService() { myStack.push(); } }
3:建立消费者服务类ide
public class Consumer { private MyStack myStack; public Consumer(MyStack myStack) { this.myStack = myStack; } public void popService() { System.out.println("消费者服务类:" + myStack.pop()); } }
4:建立生产者线程类测试
public class ThreadProduce extends Thread { private Produce produce; public ThreadProduce (Produce produce) { this.produce = produce; } @Override public void run() { while (true) { produce.pushService(); } } }
5:建立消费者线程类this
public class ThreadConsumer extends Thread { private Consumer consumer; public ThreadConsumer(Consumer consumer) { this.consumer = consumer; } @Override public void run() { while (true) { consumer.popService(); } } }
6:建立测试类线程
public class Test { public static void main(String[] args) { MyStack myStack = new MyStack(); Produce produce = new Produce(myStack); Consumer consumer = new Consumer(myStack); ThreadProduce threadProduce = new ThreadProduce(produce); ThreadConsumer threadConsumer = new ThreadConsumer(consumer); threadProduce.start(); threadConsumer.start(); } }