474. Можете ли вы сказать, какой поток перейдет в спящий режим после вызова myThread.sleep(5000) в приведенной ниже программе? это основной поток или myThread?
В предположении, что myThread - это объект класса Thread, вызов myThread.sleep(5000) остановит выполнение потока myThread на 5 секунд.
Главный (основной) поток продолжит работу и начнет выполнять следующую строку кода после вызова myThread.sleep(5000). Это происходит потому, что метод sleep() блокирует только тот поток, который его вызывает, а не все потоки в приложении.
Таким образом, главный (основной) поток не будет затронут вызовом myThread.sleep(5000), и он будет продолжать работу независимо от того, спит ли myThread или нет.
Вот пример кода на Java, который демонстрирует это поведение:
public class Main {
public static void main(String[] args) {
Thread myThread = new Thread(new MyRunnable());
myThread.start();
try {
myThread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Main thread is still running");
}
}
class MyRunnable implements Runnable {
public void run() {
try {
System.out.println("My thread is going to sleep");
Thread.sleep(3000);
System.out.println("My thread woke up");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
В этом примере мы создаем новый поток исполнения myThread и запускаем его. Затем мы вызываем метод sleep() объекта myThread на 5 секунд в главном (основном) потоке. Мы также перехватываем исключение InterruptedException, которое может быть выброшено методом sleep(). После этого мы продолжаем работу и выводим сообщение "Main thread is still running" на консоль.
Если запустить эту программу, то ее результат будет таким:
My thread is going to sleep
(ожидание 3 секунды)
My thread woke up
Main thread is still running
Как видно из результата, myThread выполняет задачу и спит на 3 секунды, в то время как главный (основной) поток продолжает работу и выводит сообщение на консоль независимо от того, спит ли myThread или нет.
1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions
Tелеграмм канал: https://t.me/DEBAGanov
Мое резюме: https://github.com/DEBAGanov