实现 Runnable - 只有一种方法?

implements Runnable - ONLY ONE method?

我有一个 class 有几种方法(casa()run()predio()、...)。我的 class 实现了 Runnable。当我用我的class的一个对象创建一个线程时,它会执行所有的方法吗?有没有办法选择执行哪一个?这是我的 Runnable class:

public class acao implements Runnable {

    public void casa() {
        for (int i = 0; i < 90000; i++) {
            System.out.println(i + "casa");
        }
    }

    public void run() {
        for (int i = 0; i < 90000; i++) {
            System.out.println("t" + i);
        }
    }

    public void predio() {
        for (int i = 0; i < 90000; i++) {
            System.out.println(i + "predio");
        }
    }

    public void carro() {
        for (int i = 0; i < 90000; i++) {
            System.out.println(i + "Carro");
        }
    }

}

下面是我用它创建线程的方法:

acao acao = new acao();
Thread threadDaAcao = new Thread(acao);
threadDaAcao.start();

我有个想法

public class EscolheAcao implements Runnable {

public String acao;

public EscolheAcao(String a) {
    this.acao = a;
}

public void run() {
    escolhe(acao);
}

public void escolhe(String acao) {
    acao a = new acao();

    if (acao.equals("carro")) {
        a.carro();
    }
    if (acao.equals("casa")) {
        a.casa();
    }
    if (acao.equals("predio")) {
        a.predio();
    }
   }
}

不,它不会 运行 所有方法,只有 运行() 方法。阅读 java.lang.Thread class 的 javadoc。 class名称以大写字母开头也是一种很好的做法 - 所以 Acao,而不是 acao。

事实上,甚至不需要让您自己的 class 可运行。使用这样的匿名 classes:

Thread t = new Thread(new Runnable() {
        @Override
        public void run() {
            Acao a = new Acao();
            a.predio();
            a.casa();
            a.carro();
        }
    });
t.start();