我在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();
}
}
我試着修改代碼的某些部分,但都不工作。
你從任何地方開始你的線程?即你有一個全部到'b.start();'? – nos
是否在線程中調用了.start()? – Nitek