public boolean shutdown()

in src/main/java/com/epam/gmp/process/QueuedProcessThreadPoolExecutor.java [104:134]


    public boolean shutdown(int timeout) {
        long stopRequested = System.currentTimeMillis();
        long stopDeadline = stopRequested + TimeUnit.MILLISECONDS.convert(timeout, TimeUnit.MINUTES);
        logger.info("ThreadPool shutdown requested. Wait for running scripts to complete their job... countdown: {} milliseconds.", stopDeadline - System.currentTimeMillis());

        while ((incompleteScripts.get() != 0) && ((System.currentTimeMillis() < stopDeadline))) {
            logger.info("Await for termination, pending scripts=({}); threadPoolActive: {}; countdown: {} milliseconds.", incompleteScripts.get(), getActiveCount(), stopDeadline - System.currentTimeMillis());
            synchronized (incompleteScripts) {
                try {
                    incompleteScripts.wait(TimeUnit.MILLISECONDS.convert(10, TimeUnit.SECONDS));
                } catch (InterruptedException e) {
                    logger.debug("Await check.");
                }
            }
        }
        if (incompleteScripts.get() > 0) {
            logger.error("Shutdown timeout occurred.");
            List<Runnable> frozenTasks = shutdownNow();
            for (Runnable task : frozenTasks) {
                logger.error("Frozen: {}", task);
                if (task instanceof GroovyFutureTask) {
                    ((GroovyFutureTask<?>) task).cancel(true);
                }
            }
            return false;
        } else {
            logger.info("No active Scripts. Shutting down...");
            shutdown();
            return true;
        }
    }