План уровня:
- Знакомство с нитями:
Thread
,Runnable
,start, join
,interrupt
,sleep
- Знакомтво с нитями
- 2 пособа создания нитей
- Создание своей нити - метод
start()
- Методы
sleep, join, interrupt
- Способы завершить нить
InterruptedException
Что еще можно посмотреть на досуге:
- Глава "Параллельное выполнение" в Thinking in Java
- Многопоточность в Java
- Java uncaught global exception handler
Нашли классную ссылку к материалу данной темы? Добавьте ее сюда в виде комментария. Возможно, именно Ваша ссылка поможет другому человеку стать программистом и улучшить свою жизнь! Вернуться к плану обучения Вернуться к обучению java онлайн на JavaRush
Вывод такой:
Обнаружил сегодня интересную особенность задачи. При значении параметра soundsInOneSpeech от 1 000 000 и выше ( при 100 000 работает нормально, между ними — не пробовал), главный процесс не останавливается (рис. 1). Если в дочерних потоках обозначить их завершение (рис. 2), то можно увидеть, что они закончили свою работу, а главный поток продолжает выполняться.
Но стоит добавить в цикл главного потока любую операцию вывода (рис. 3) (закомментированный вариант использовался при отладке), как программа сразу же начинает корректно отрабатывать и завершаться.
Так вот, кто может объяснить, ПОЧЕМУ так происходит? Спасибо.
P.S. На борту Windows 7 Корпоративная 64 бита, Идея 15.0.2, jdk 1.8.0_65
"… Если поток является демоном, то все потоки, которые он производит, также будут демонами..."
Мы точно программирование изучаем?
XD)))))))))))))))))))))
«Цель этого метода, чтобы программа «заснула» на некоторое время.»
Такая формулировка из лекции заставила долго ломать голову над задачей: level16.lesson10.task02.
Cчитаю, что данную формулировку из лекции стоит скорректировать. Ведь sleep() усыпляет не программу, а текущий тред. Тред, в котором вызван sleep().