我有一个包含多种方法的课程(casa()
,run()
,predio()
,...)。我的班级实现了Runnable
。当我用我的类的对象创建一个线程时,它会执行所有方法吗?有没有办法选择执行哪一个?这是我的Runnable
课程:
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();
答案 0 :(得分:0)
不,它不会运行所有方法,只运行run()方法。阅读java.lang.Thread类的javadoc。用大写字母开始类名也是一种好习惯 - 所以Acao,而不是acao。
实际上甚至不需要自己创建Runnable类。使用这样的匿名类:Thread t = new Thread(new Runnable() {
@Override
public void run() {
Acao a = new Acao();
a.predio();
a.casa();
a.carro();
}
});
t.start();
答案 1 :(得分:-1)
我有一个想法。
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();
}
}
}