Выберите, что делает данный код:
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 миллисекунд, а затем основной поток ждал бы его завершения.