0

所以我一直在想,最近,在学校里,我们一直在学习 java 线程..

与大多数其他语言不同,我还没有找到一种在 java 中线程化函数的方法,而这正是我正在寻找的......

我知道可以使用 run 类,但想象一个类有 3 个函数,每个函数都有自己的参数,如果可能的话,我希望能够调用这些函数并单独线程化它们......

4

3 回答 3

10
new Thread(new Runnable() {
    public void run() 
    {
         functionToThread();
    }
}).start();
于 2012-11-25T15:57:06.573 回答
4

在 Java 中实现多线程的正确方法是实现Runnable. 扩展Thread类只是一种方便的稍微简单的方法,但实现Runnable接口是最好的,因为它为您提供了run()可以调用函数的方法,还允许您扩展其他类而不是Thread.

但是,您无权访问的是您在另一个线程中执行的函数的返回值。为此,您可以使用Futurewhich 为您提供一个对象,该对象将在其他线程执行该函数后立即填充您的返回值。而不是实现Runnable你实现Callable,这是非常相似的,它的方法被称为call()而不是run(),并允许你通过泛型指定返回类型。Future对象也可以与线程池和任务执行器一起使用。查看Future类的javadoc中的示例,它有一个很好的示例和解释。

还要记住,在一个方法中你可以创建一个匿名类,所以如果你只是在那之后你只需在你想要在一个单独的线程中执行的方法中内联(扩展Runnable或)。Callable(正如 Cruncher 在他的回答中指出的那样)

于 2012-11-25T16:03:31.690 回答
1

您必须创建单独的包装类来实现Runnable或扩展线程并调用您的函数。

顺便说一句,即使 java 有像 C 这样的方法指针,你仍然需要一些知道要传递给函数的参数值的包装器。

于 2012-11-25T15:54:15.847 回答