Array stack is a bounded lock-based stack using an array. It uses a common lock for both push and pop operations.
Course: Concurrent Data Structures, Monsoon 2020
Taught by: Prof. Govindarajulu Regeti
push(): 1. Lock stack. 2. Try push. 3. Unlock stack.
pop(): 1. Lock stack. 2. Try pop. 3. Unlock stack.
tryPush(): 1. Ensure stack is not full 2. Save data at top. 3. Increment top.
tryPop(): 1. Ensure stack is not empty. 2. Decrement top. 3. Return data at top.
## OUTPUT Starting 10 threads with sequential stack 7: failed pop 1: failed pop 5: failed pop 8: failed pop 9: failed pop 1: popped 0/1000 values 5: popped 158/1000 values 7: popped 0/1000 values 8: popped 0/1000 values 9: popped 31/1000 values Was LIFO? false Starting 10 threads with array stack Was LIFO? true
See ArrayStack.java for code, Main.java for test, and repl.it for output.