Java线程:指定在线程的运行函数中调用的函数

时间:2013-11-30 20:59:53

标签: java multithreading

我想知道是否可以定义将在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() {
    }

}

3 个答案:

答案 0 :(得分:5)

是的,根据您要运行的内容,将另一个Runnable对象传递给构造函数。像这样:

new Thread(myRunnable1);

new Thread(myRunnable2);

然后你不需要WorkerThread类。

答案 1 :(得分:2)

Java反射提供了一种按名称调用方法的方法。该教程可在此处获取:http://docs.oracle.com/javase/tutorial/reflect/

答案 2 :(得分:0)

这是正确的,但我建议使用interfaces