> При многопоточном программировании в java для каждого Thread-а
> нужно создавать отдельный класс?
Если речь не идет о java.util.concurrent, то обязательно нужно. Другое дело, что не обязательно помещать тот, код который вы хотите выполнить в новом потоке в класс унаследованный от класса Thread, вместо этого можно реализовать интерфейс Runnable и скормить классу Thread экземпляр вашего объекта (который реализует интерфейс Runnable).
Класс Thread представляет собой один поток и если вам нужно несколько потоков, то у вас будет несколько классов Thread.
Что касается интерфейса Runnable, то он "определяет" шаблон задачи, которую можно запустить на выполнение, ни о какой многопоточности здесь не идет и речи. Т.е. когда мы имплементируем этот интерфейс, то у нас есть только метод run, при вызове этого метода нового потока не создается. Новый поток создает класс Thread, которому мы передаем экземпляр класса имплиментирующего интерфейс Runnable. Класс Thread создает новый поток, перемещает туда наш объект и вызывает у него метод run.
Если говорить о java.util.concurrent, то там есть более удобные способы реализации многопоточности, чем работа с классом Thread напрямую (например, всякого рода экзекьюторы или можно присмотреться к Fork/Join).
В java есть два способа создать поток - отнаследоваться от класса Thread и переопределить метод run() или имплементировать Runnable и опять же переопределить метод run()
Ты очень плохо задал вопрос - непонятно что именно ты пытаешься сделать.
Если ты создал класс MyThread extends Thread, то запустить его после инициализации ты можешь только один раз:
MyThread myThread = new MyThread();
myThread.start();
//myThread.start(); -- повторый вызов выбросит IllegalStateException
//для запуска еще одного потока нужно создавать еще один объект класса MyThread.
MyThread myThread2 = new MyThread();
myThread2.start();
//=================================//
Если же у тебя есть какой-нибудь класс MyClass implements Runnable:
MyClass myClass = new MyClass();
Thread thread1 = new Thread(myClass);
Thread thread2 = new Thread(myClass);
thread1.start();
thread2.start();