protected void readyGo(ConcurrentParallelCall runnerLambda, ConcurrentParallelOption option) {
        if (isEmptyParallel(option)) {
            return;
        }
        createCountdownRace(option).readyGo(new LaCountdownRaceExecution() {

            protected Map<String, Object> threadCacheMap; // not null after ready
            protected AccessContext accessContext; // null allowed after ready
            protected CallbackContext callbackContext; // null allowed after ready

            @Override
            public void readyCaller() { // in caller thread
                threadCacheMap = doInheritThreadCacheContext(); // not null
                accessContext = doInheritAccessContext(); // null allowed
                callbackContext = doInheritCallbackContext(() -> {}); // null allowed, dummy call here
            }

            @Override
            public void hookBeforeCountdown() { // in new thread
                doPrepareThreadCacheContext(threadCacheMap);
                doPreparePreparedAccessContext(accessContext);
                doPrepareCallbackContext(callbackContext);
            }

            @Override
            public void execute(LaCountdownRaceRunner runner) {
                runnerLambda.callback(createConcurrentParallelRunner(runner));
            }

            @Override
            public void hookBeforeGoalFinally() { // in new thread
                doClearCallbackContext();
                doClearPreparedAccessContext();
                doClearThreadCacheContext();
            }

            @Override
            public boolean isThrowImmediatelyByFirstCause() {
                return option.isThrowImmediatelyByFirstCause();
            }
        });
    }
protected void readyGo ( ConcurrentParallelCall runnerLambda , ConcurrentParallelOption option ) { if ( isEmptyParallel ( option ) ) { return ; } createCountdownRace ( option ) . readyGo ( new LaCountdownRaceExecution ( ) { protected Map < String , Object > threadCacheMap ; protected AccessContext accessContext ; protected CallbackContext callbackContext ; @ Override public void readyCaller ( ) { threadCacheMap = doInheritThreadCacheContext ( ) ; accessContext = doInheritAccessContext ( ) ; callbackContext = doInheritCallbackContext ( ( ) -> { } ) ; } @ Override public void hookBeforeCountdown ( ) { doPrepareThreadCacheContext ( threadCacheMap ) ; doPreparePreparedAccessContext ( accessContext ) ; doPrepareCallbackContext ( callbackContext ) ; } @ Override public void execute ( LaCountdownRaceRunner runner ) { runnerLambda . callback ( createConcurrentParallelRunner ( runner ) ) ; } @ Override public void hookBeforeGoalFinally ( ) { doClearCallbackContext ( ) ; doClearPreparedAccessContext ( ) ; doClearThreadCacheContext ( ) ; } @ Override public boolean isThrowImmediatelyByFirstCause ( ) { return option . isThrowImmediatelyByFirstCause ( ) ; } } ) ; }
--------