Просто обратитесь к документации Java или описанию API JAVA, а не гугляте его.Для ваших вопросов у меня есть комментарии ниже.
Вопрос 1 ->
ExecutorService executorService = Executors.newFixedThreadPool (10);
Сначала создается ExecutorService с использованием newFixedThreadPool Executors) заводской метод.Это создает пул потоков с 10 потоками, выполняющими задачи.
Executors.newFixedThreadPool API создает пул потоков, который повторно использует фиксированное число потоков, и эти потоки работают напоскольку *** имела неограниченную очередь ***.В любой момент не более nThreads потоков будут активными задачами обработки.Если дополнительные задачи отправляются, когда все потоки активны, они будут ждать в очереди, пока поток не станет доступным.Если какой-либо поток завершается из-за сбоя во время выполнения до завершения работы, новый будет занимать его место, если это необходимо для выполнения последующих задач.Потоки в пуле будут существовать до тех пор, пока он не будет явно ОТКЛЮЧЕН.После отправки даже 20 задач он работал с этим пулом потоков.
Внутренне он вызывает нижнюю строку кодов. public static ExecutorService newFixedThreadPool (int nThreads) {вернуть новый ThreadPoolExecutor (nThreads, nThreads, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue ());}
Вопрос 2-> Отправляет задачу Runnable для выполнения в очереди, а также может возвращать объект типа Future Object, представляющий задачу.мы можем использовать метод get из Future, чтобы проверить, успешно ли выполнено заданное задание или нет, потому что оно вернет ноль при успешном завершении.