简体   繁体   English

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

[英]Java Thread: Specify function to Call in Thread's run function

I wonder if it's possible define function that will be called in Thread's run . 我想知道是否有可能在Thread's run调用定义函数。 It can be done by using if statement but is there a better way to do so? 可以通过使用if语句来完成,但是有更好的方法吗?

a possible solution 一个可能的解决方案

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() {
    }

}

Yes, pass in a different Runnable object to the constructor, depending on what you want to run. 是的,根据您要运行的内容,将另一个Runnable对象传递给构造函数。 Like this: 像这样:

new Thread(myRunnable1);

or 要么

new Thread(myRunnable2);

Then you don't need the WorkerThread class. 然后,您不需要WorkerThread类。

Java reflection provides a way of calling a method by name. Java反射提供了一种通过名称调用方法的方法。 The tutorial is available here: http://docs.oracle.com/javase/tutorial/reflect/ . 该教程位于: http : //docs.oracle.com/javase/tutorial/reflect/

是正确的,但我建议使用interfaces来完成

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM