实现 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();
我有一个 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();