我在Runnable和Thread实现方面遇到了麻烦。我有这个抽象类,无法修改:
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();
}
}
我尝试修改代码的某些部分,但两者都没有。
答案 0 :(得分:1)
您必须在start()
对象
thread
方法
https://docs.oracle.com/javase/tutorial/essential/concurrency/runthread.html
答案 1 :(得分:1)
您的Thread b = new Thread(burbuja);
是对的,但您忘了拨打开始方法,b.start();