Java线程:指定要在线程中调用的函数';s运行函数
我想知道是否有可能定义将在Java线程:指定要在线程中调用的函数';s运行函数,java,multithreading,Java,Multithreading,我想知道是否有可能定义将在线程的运行中调用的函数。它可以通过使用if语句来完成,但是有更好的方法吗 可能的解决办法 public class WorkerThread extends Thread { private String functionToCall = null; public WorkerThread(String functionToCall) { this.functionToCall = functionToCall; }
线程的运行中调用的函数。它可以通过使用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() {
}
}
是,根据要运行的内容,将不同的Runnable
对象传递给构造函数。像这样:
new Thread(myRunnable1);
或
那么您就不需要WorkerThread
类了。是的,将不同的Runnable
对象传递给构造函数,具体取决于您想要运行什么。像这样:
new Thread(myRunnable1);
或
然后您就不需要WorkerThread
类了。Java反射提供了一种按名称调用方法的方法。本教程在这里提供:。Java反射提供了一种按名称调用方法的方法。教程在这里提供:。这是正确的,但我建议使用。这是正确的,但我建议使用。您可以使用反射来实现这一点:为什么不实现两个不同的线程
实例?可能是为了编写更少的代码?fane89也许您希望将您的评论作为答案发布类应该只解决一个问题。如果你有两个问题,你不应该把它们混在一起。这一原则被称为。您可以使用反射来实现这一点:为什么不实现两个不同的线程
实例?可能是为了编写更少的代码?fane89可能您希望将您的注释作为answerOne类只解决一个问题。如果你有两个问题,你不应该把它们混在一起。这个原则叫做“伊斯梅尔”,我会同意这个答案。我的答案和你们的完全一样,但这是一个更好的技巧。如果可能的话,我会建议避免反思。@ismail,我会同意这个答案。我的答案和你们的完全一样,但这是一个更好的技巧。我建议尽可能避免反思。