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? trueSee ArrayStack.java for code, Main.java for test, and repl.it for output.