private boolean createWorker(boolean isSpare) {
        ForkJoinWorkerThreadFactory fac = factory;
        Throwable ex = null;
        ForkJoinWorkerThread wt = null;
        WorkQueue q;
        try {
            if (fac != null && (wt = fac.newThread(this)) != null) {
                if (isSpare && (q = wt.workQueue) != null)
                    q.config |= SPARE_WORKER;
                wt.start();
                return true;
            }
        } catch (Throwable rex) {
            ex = rex;
        }
        deregisterWorker(wt, ex);
        return false;
    }
private boolean createWorker ( boolean isSpare ) { ForkJoinWorkerThreadFactory fac = factory ; Throwable ex = null ; ForkJoinWorkerThread wt = null ; WorkQueue q ; try { if ( fac != null && ( wt = fac . newThread ( this ) ) != null ) { if ( isSpare && ( q = wt . workQueue ) != null ) q . config |= SPARE_WORKER ; wt . start ( ) ; return true ; } } catch ( Throwable rex ) { ex = rex ; } deregisterWorker ( wt , ex ) ; return false ; }
Tries to construct and start one worker. Assumes that total
count has already been incremented as a reservation.  Invokes
deregisterWorker on any failure.

@param isSpare true if this is a spare thread
@return true if successful