Скажем, я создаю несколько потоков в 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, который я убил только один из потока.