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

Ism*_*hin 1 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() {
    }

}
Run Code Online (Sandbox Code Playgroud)

Rob*_*een 5

Runnable的,根据您要运行的内容,将不同的对象传递给构造函数.像这样:

new Thread(myRunnable1);
Run Code Online (Sandbox Code Playgroud)

要么

new Thread(myRunnable2);
Run Code Online (Sandbox Code Playgroud)

那你就不需要WorkerThread上课了.