Что означает прерывание потока? - PullRequest
2 голосов
/ 08 мая 2019

Скажем, я создаю несколько потоков в java, используя executorService следующим образом:

public class AbcThreadPool {

    private final AbcThreadPoolExecutor executor;

    public InventoryAvailabilityThreadPool(final AbcRunnableFactory factory,
                                           final Integer poolSize) {
        executor = new AbcThreadPoolExecutor(factory, poolSize);

        for (int i = 0; i < poolSize; ++i) {
            executor.execute(factory.createRunnable());
        }
    }

    private static class AbcThreadPoolExecutor extends ThreadPoolExecutor {

        private final AbcRunnableFactory factory;

        public AbcThreadPoolExecutor(final AbcRunnableFactory factory,
                                                       final int poolSize) {
            super(poolSize, poolSize, 0, TimeUnit.SECONDS, new LinkedBlockingQueue<>());
            this.factory = factory;
            allowCoreThreadTimeOut(false);
        }
    }


    @Override
    protected void afterExecute(Runnable r, Throwable t) {
        if (!isShutdown() && !Thread.currentThread().isInterrupted()) {
            execute(factory.createRunnable());
        }
    }
}

В afterExecute мы используем условие! IsShutdown () &&! Thread.currentThread (). IsInterrupted ()

Я хотел знать, что в буквальном смысле означает отключение потока или его прерывание.В этом случае мы не выполняем исполняемый файл.Для выключения или прерывания процесса, я думаю, это эквивалентно CTRL + C. Но в потоке они - небольшие вещи, запускаемые внутри процесса.Как может быть любой Ctrl + C, который я убил только один из потока.

...