Сразу не понятен следующий момент: Что происходит тут: TestedThread commonThread = new TestedThread(handler); Thread threadA = new Thread(commonThread, "Нить 1"); Thread threadB = new Thread(commonThread, "Нить 2"); Мы создаем общую нить, которая запускается в конструкторе. Далее на основе этой нити мы создаем еще две и потом снова их запускаем , но мне не понятно это, как мы на основе работающей нити создаем еще и запускаем новые? Или это значит просто, что мы создали три нити на основе одного объекта? Но в лекциях писалось, что такое можно сделать, когда реализуем Runnable, а в случае с extend Thread мол не можем, получается можем? или тут происходит что-то другое?