Java Thread сам реализует Java Runnable! и, по мнению большинства экспертов по Интернету, реализует Runnable предпочтительнее, чем extends Thread! даже если мы не можем использовать использование Runnable в смысле потока без класса Thread!
Тогда почему мы предпочитаем реализовать Runnable по расширению Thread, поскольку в обоих случаях фактический поток указан путем вызова метода Thread (т.е. start() или run()), хотя в случае Thread мы действительно не расширяют функциональность Thread, просто переопределяя метод run()?
Я извиняюсь, если я сбиваю с толку..!