public void push(){
  Deque<TaskContext> stack=contextStacks.get();
  if (stack == null) {
    stack=new LinkedList<>();
    contextStacks.set(stack);
    final Thread currentThread=Thread.currentThread();
synchronized (contextStacksMap) {
      contextStacksMap.put(currentThread,stack);
    }
  }
  stack.addLast(this);
}

public void push ( ) { Deque < TaskContext > stack = contextStacks . get ( ) ; if ( stack == null ) { stack = new LinkedList < > ( ) ; contextStacks . set ( stack ) ; final Thread currentThread = Thread . currentThread ( ) ; synchronized ( contextStacksMap ) { contextStacksMap . put ( currentThread , stack ) ; } } stack . addLast ( this ) ; }
adds this execution context to the top of the context stack for the current thread .
