2016-02-08 2 views
-3

У меня возникают проблемы с реализациями Runnable и Thread. У меня есть этот абстрактный класс, который не может быть изменен:Метод run() не вызывается из реализации Runnable.

abstract class Ordenador { 

    ... 

    protected Ordenador(String nombre, int[] array) { 
     ... 
    } 

    protected void escribir() { 
     ... 
    } 

    protected abstract void ordenar(); 

} 

И этот алгоритм сортировки, который наследует от класса выше и реализует run() метод, который называют сортировку один.

class Burbuja extends Ordenador implements Runnable { 

    protected Burbuja(String nombre, int[] array) { 
     super(nombre, array); 
    } 

    protected void ordenar() { 
     .... 
    } 

    public void esperar() { 
     try { 
      Thread.sleep(1000); 
     } catch (InterruptedException ex) { 
      ex.printStackTrace(); 
     } 
    } 

    public void run() { 
     this.ordenar(); 
    } 
} 

Наконец у меня есть основной класс, который создает случайный массив и создать новый объект Burbuja, что сортировать массив. Проблема в том, что при вызове b.join() массив остается таким же, поэтому метод ordenar() не вызывается.

class Aplicacion { 

    public static void main(String[] args) { 
     ... 

     Burbuja burbuja = new Burbuja("Burbuja", array); 
     Thread b = new Thread(burbuja); 
     ... 

     try { 
      b.join(); 
      s.join(); 
      ... more sorting algorithms... 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
      System.exit(-1); 
     } 

     System.out.println(""); 
     burbuja.escribir(); 
    } 
} 

Я пробовал модифицировать некоторые части кода, но не работает ни.

+2

ли вы начать ваши потоки в любом месте? т. е. у вас есть все для 'b.start();'? – nos

+0

Вы звонили .start() в теме? – Nitek

ответ

1

Ваш Thread b = new Thread(burbuja); правильно, но вы забыли вызвать метод запуска, b.start();

Смежные вопросы