package multithreading concurrency; import java.util.stack;/** * Created by z84102272 on 2018/7/17. */public class Blockqueueimpl {private final static Object Pushlock = new Object (); Push lock private Final static Object Poplock = new Object (); The lock of the pop private stack<object> Stack; Store data public Blockqueueimpl () {stack = new stack<> (); }/** * Push lock */private void Pushlock () {synchronized (pushlock) {try{pus Hlock.wait (); }catch (Exception e) {e.printstacktrace (); }}}/** * Release push lock */private void Pushunlock () {pushlock.notify (); } private void Poplock () {try {poplock.wait (); }catch (Exception e) {e.printstacktrace (); }} private void Popunlock () {poplock.notify (); Public synchronized void push (Object o) {int max_size = 3; if (Stack.size () >= max_size) {PUShlock (); } stack.push (o); Popunlock (); Public Object Pop () {if (Stack.size () ==0) {poplock (); } Object o = Stack.pop (); Pushunlock (); return o; } }
Java Implementation blocking queue