run()方法不会从Runnable实现中调用

时间:2016-02-08 19:08:30

标签: java java-threads

我在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();   
    }
}

我尝试修改代码的某些部分,但两者都没有。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

您的Thread b = new Thread(burbuja);是对的,但您忘了拨打开始方法,b.start();