我想知道是否可以定义将在Thread's run
中调用的函数。可以使用if语句来完成,但是有更好的方法吗?
可能的解决方案
public class WorkerThread extends Thread {
private String functionToCall = null;
public WorkerThread(String functionToCall) {
this.functionToCall = functionToCall;
}
public void run() {
if (functionToCall.equals("func1"))
func1();
else if (functionToCall.equals("func2"))
func2();
}
private void func1() {
}
private void func2() {
}
}
答案 0 :(得分:5)
是的,根据您要运行的内容,将另一个Runnable
对象传递给构造函数。像这样:
new Thread(myRunnable1);
或
new Thread(myRunnable2);
然后你不需要WorkerThread
类。
答案 1 :(得分:2)
Java反射提供了一种按名称调用方法的方法。该教程可在此处获取:http://docs.oracle.com/javase/tutorial/reflect/。
答案 2 :(得分:0)
这是正确的,但我建议使用interfaces。