@Override
    public void stop() throws UnsupportedOperationException {
        if (!canBeStopped()) {
            throw new UnsupportedOperationException("Stop not supported");
        }
        setupLinkedLockIfNeeds();
        synchronized (linkedLock) {
            if (linkedThread != null && !isStopped()) {
                registerStoppedAsTrue();
                if (isPaused()) {
                    resume();
                }
                invokeNotifyExecutionStopping();
                linkedThread.interrupt();
            }
        }
        // no wait to avoid deadlock of LaScheduledJob's lock between stopNow() thread and job thread
        // in the first place, no need to wait thread ending here because stop is only request (no guarantee of stop)
        //if (joinit) {
        //    do {
        //        try {
        //            thread.join();
        //            break;
        //        } catch (InterruptedException e) {
        //            continue;
        //        }
        //    } while (true);
        //    thread = null;
        //}
    }
@ Override public void stop ( ) throws UnsupportedOperationException { if ( ! canBeStopped ( ) ) { throw new UnsupportedOperationException ( "Stop not supported" ) ; } setupLinkedLockIfNeeds ( ) ; synchronized ( linkedLock ) { if ( linkedThread != null && ! isStopped ( ) ) { registerStoppedAsTrue ( ) ; if ( isPaused ( ) ) { resume ( ) ; } invokeNotifyExecutionStopping ( ) ; linkedThread . interrupt ( ) ; } } }
=========