2016-02-08 53 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()時,數組保持不變,因此de 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);是正確的,但是你忘記調用start方法,b.start();

相關問題