JavaRush /Курсы /Java Multithreading /Подготовка к собеседованию 8 уровень

Подготовка к собеседованию 8 уровень

Java Multithreading
8 уровень , 14 лекция
Открыта

— Привет, Амиго!

Вопросы к собеседованиям
1 Какие приоритеты нитей бывают?
2 Можно ли остановить нить, снизив ее приоритет до 0?
3 Зачем нужен класс ThreadGroup?
4 В какой группе нитей состоит main-thread?
5 Что такое паттерн ThreadPool?
6 Зачем нужен класс ThreadPoolExecutor?
7 Сколько способов создать нить вы знаете? (Thread, Runnable, Callable<T>)
8 Для чего используется класс Future?
9 В чем преимущества Callable над Runnable?
10 Можно ли отменить выполнение задачи, если использовать класс Future?
Комментарии (17)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Юлия Уровень 41
8 августа 2023
Я відповіла на ці питання так: Частина 1 Частина 2
murtagh Уровень 46
8 июля 2023
Евгений Уровень 32 Expert
22 июня 2023
Константин Уровень 51
7 февраля 2023
Daniel Уровень 51
16 февраля 2023
G Уровень 41 Expert
12 января 2023
Сделайте интерактивные опросы, как в начале первого модуля.
Druha Уровень 31
8 января 2023
4 question:

public class Test {
    public static void main(String[] args) {
        ThreadGroup tg = Thread.currentThread().getThreadGroup();
        System.out.println(tg);
    }
}

// output:
java.lang.ThreadGroup[name=main,maxpri=10]
Саня Уровень 38
22 ноября 2021
1 Какие приоритеты нитей бывают? От 1 (минимальный) до 10 (максимальный); нормальный -- 5 2 Можно ли остановить нить, снизив ее приоритет до 0? Нет, нельзя. И кстати, до 0 не снизить, минимум 1 3 Зачем нужен класс ThreadGroup? Для того, чтобы производить групповые операции над набором нитей 4 В какой группе нитей состоит main-thread? main 5 Что такое паттерн ThreadPool? Это переиспользование нитей, вместо создания каждый раз новых (делать новые -- дорого для производительности) 6 Зачем нужен класс ThreadPoolExecutor? Чтобы раздавать задачи нитям из ThreadPool-а 7 Сколько способов создать нить вы знаете? (Thread, Runnable, Callable<T>) (предполагается, что речь идёт о создании объекта класса Thread) Либо напрямую, передав в конструктор Runnable, либо унаследовавшись от Thread, либо фабричным способом (например, при создании экзекъютора с помощью Executors, происходит создание нитей для пула) 8 Для чего используется класс Future? Для получения результата асинхронного вычисления. Future позволяет проверить, готов ли результат и получить его, если готов 9 В чем преимущества Callable над Runnable? Возможность вернуть результат и возможность кинуть исключение 10 Можно ли отменить выполнение задачи, если использовать класс Future? Да, но только если задача ещё не начата. Вот пример:

ExecutorService executorService = Executors.newFixedThreadPool(1);
executorService.submit(()->{
    try {Thread.sleep(500);}
    catch (InterruptedException ignored){}
});
Future<?> future = executorService.submit(()->System.out.println("I was not cancelled"));
future.cancel(true);
executorService.shutdown();
В этом примере можно даже начатую первую задачу прервать, пока в ней выполняется Thread.sleep -- но такая возможность уже зависит от реализации Future
Роман Уровень 31
16 мая 2021
Ничего, что Future<V> это интерфейс, а не класс?
Илья Уровень 41
7 января 2021
В чем прикол пятого вопроса, если реализация этого паттерна написана в стандартной библиотеки?