Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > создание потока


Автор: mickhalich 7.6.2007, 19:29
Создаю класс, который имплементит Runnable, переопределяю ему метод run(), в другом классе создаю новый объект Thread, передаю ему экземпляр первого класса:

Код

public final class CLASS1 extends CLASS2 implements Runnable {
 public void run() {
  //some code
 }
}

public class CLASS3 {
 public static void main(String[] args) {
   CLASS1 aaa = new CLASS1();
   new Tread(aaa, "Поток").start();
 {
}


Выскакивает ошибка:
Exception in thread "Поток" java.lang.Error: Unresolved compilation problem: 
The method run() of type CLASS1 must override a superclass method


Но я ведь его уже переопределил!!! Почему он эту ошибку пишет?!
Никак не могу сообразить в чем проблема. Подскажите, пожалуйста!  smile 

Автор: powerOn 7.6.2007, 21:03
Выкладывай код всех классов полностью, в том виде в котором они у тебя в программе.

Автор: s8e8r8g8e 8.6.2007, 01:42
наверняка что-то вроде 'int run()' в class2, но это конечно на кофейной гуще вилами писано без кода

Автор: mickhalich 8.6.2007, 09:56
CLASS2 не реализует Runnable и у него нет метода run()!
В этом вся фишка!
CLASS1 расширяет CLASS2, который не является потоком, и реализует Runnable, сам становясь таким образом потоком

Если я выложу ВЕСЬ код этих трех классов форум лопнет  smile 

Если я удаляю implements Runnable, то public void run() проглатывается без проблем

Автор: powerOn 8.6.2007, 13:11
Все прекрасно работает:
Код

class CLASS2 {}
class CLASS1 extends CLASS2 implements Runnable
{
    public void run()
    {
        System.out.println("Test!");
    }
}

public class CLASS3
{
    public static void main(String[] args)
    {
        new Thread(new CLASS1()).start();
    }
}


ошибка где-то в классе CLASS2, котрый показывать ты не хочешь.

Автор: mickhalich 8.6.2007, 17:42
нет с CLASS2 все нормально smile
ошибка была глупой: я пометил run() @Override, вот компилятор меня и заворачивал с требованием определить run() в CLASS2. Убрал аннотацию и все зароботало.
Сорри за столь глупый вопрос.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)