将实际命令作为参数Java传递

时间:2010-08-31 22:52:41

标签: java multithreading command

我目前正在Java中使用一个可能用于许多不同功能的单独线程,我想知道是否有办法将实际函数调用的命令作为参数传递。这看起来像是:

class myWorkerThread implements Runnable
{
    private (<String/whatever other type>) runCommand;
    public myWorkerThread(<String/whatever other type> <my command>)
    {
    }
    public void run()
    {
       //Actually run that command.
    }

}

我希望得到一个工具,它不会让我使用丑陋的switch case语句或类似的东西。我要求线程运行的不同函数有不同的参数,但我希望能够使用相同的线程运行它们。

跟进问题/链接到其他资源很棒。

感谢。

4 个答案:

答案 0 :(得分:5)

通常,您可以通过使用Executor创建Runnablerunning的实现来执行此类操作。 Executor管理您的主题。

使用CallableFuture,,您还可以从submit执行异步执行的任务中获得结果。

答案 1 :(得分:4)

您不能将函数指针作为参数传递给Java。 (可选)您可以定义支持该操作的接口,并将引用传递给实现该接口的对象。从该引用中调用所需的方法。

此外,您使用Command这个词让我觉得Command Processor pattern可能有用。

答案 2 :(得分:1)

您可以使用Command方法制作execute()界面 然后,每个命令都是实现接口的单独类。

答案 3 :(得分:0)

您可能还想查看Java Reflection

这是因为您可以使用字符串对象按名称调用方法