Я понимаю ваше негодование, но формат статьи не позволяет описать все и сразу. В нормальном режиме компиляции программа работает. На данном этапе не вижу смысла требовать большего. Никто не ринется писать многопоточные программы, сразу после прочтения данной статьи, пока не разберется что к чему. Статья служит точкой старта а не полным руководством. О volatile, syncronized и разделении ресурсов между потоками будет рассказано в следующей статье.
По Java есть отличная книжка «Эккель Б. — Философия Java». Пережила четыре издания и имеет хорошие отзывы. Почти все мои знания по Java — из неё. О потоках же я в основном читал из документации Oracle. Конкретно о потоках — здесь.
Допустим вы в рамках одного потока поймали InterruptedException, например, в методе sleep и поглотили его без выставления флага. Если дальше по коду (или выше по стеку) стоят проверки флага Interrupted — то они не сработают
Ну, это было бы косяком если бы кто-то собирался прерывать потоки из примеров) В примере с объяснением прерываний обработка исключения выполняется (а именно вызывается return), в других примерах особого смысла раздувать код не вижу. Однако в более «жизненных» ситуациях работать с исключениями, конечно, надо по-другому.
Да, про Callable я забыл, а если честно то и вовсе не знал) Насколько я понимаю возвращение результата работы потока используется не слишком часто, но, все равно, напишу об этом в следующей статье.
Насчет исключения — честно говоря я не очень понимаю зачем другим методам в стеке знать о возникнувшем исключении, если после его возникновения требуется просто продолжить выполнение вызвавшего метода. Может поясните?
volatile
расскажу в следующей статье.Ну, это было бы косяком если бы кто-то собирался прерывать потоки из примеров) В примере с объяснением прерываний обработка исключения выполняется (а именно вызывается return), в других примерах особого смысла раздувать код не вижу. Однако в более «жизненных» ситуациях работать с исключениями, конечно, надо по-другому.
Насчет исключения — честно говоря я не очень понимаю зачем другим методам в стеке знать о возникнувшем исключении, если после его возникновения требуется просто продолжить выполнение вызвавшего метода. Может поясните?