Выберите, что делает данный код:
publicclassMain(
Thread t1 = new Thread (
public void rund {
try {
Thread.sleep(500):|
} catch (InterruptedException e) {
e.printStackTrace:
Thread.currentThread).start: 1/1/
t1.start); 11 2
t1 Join(:
• Код не компилируется
• Каждые полсекунды будет создаваться новый поток, в конце концов система начнет страшно тормозить
• Код выбрасывает ошибку при запуске на строке 1
• Код выбрасывает ошибку при запуске на строке 2
Другие предметы Университет Многопоточность Java программирование на Java университет многопоточность ошибки в коде Thread InterruptedException компиляция кода запуск потоков управление потоками
Давайте проанализируем данный код и выяснить, что он делает. Для начала, представим, что код был написан с учетом правильного синтаксиса Java. Вот как он мог бы выглядеть:
public class Main {
public static void main(String[] args) {
Thread t1 = new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
t1.start();
try {
t1.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Теперь давайте разберем, что происходит в этом коде:
t1 и передаем ему экземпляр анонимного класса, реализующего интерфейс Runnable. В методе run() мы указываем, что поток будет "спать" в течение 500 миллисекунд.t1.start(), что запускает выполнение потока. Это означает, что метод run() будет выполнен в новом потоке.t1.join(). Это заставляет текущий поток (в данном случае основной поток) ждать, пока поток t1 завершит свою работу.Теперь вернемся к вашим вариантам ответов:
Таким образом, наиболее вероятный ответ - это то, что код не компилируется, так как в нем присутствуют синтаксические ошибки. Если бы код был исправлен, он бы работал корректно, создавая один поток, который "спит" 500 миллисекунд, а затем основной поток ждал бы его завершения.