从同一个唯一线程

时间:2016-07-15 16:02:41

标签: java multithreading methods parameters callable

我有这样的服务有很多方法:

public class MyService {
 public void method1(String arg0, int arg1) {...}
 public MyObject method2(Object arg0, String arg1, int arg2) {...}
 //...
}

现在,从各种线程(Eclipse RCP上下文)调用MyService的方法。 我需要从同一个独特的线程中调用该服务的所有方法。

我见过SingleThreadExecutor但是我必须将每个方法定义为Callable并为每个方法创建一个Class吗?另外,我不知道如何将各种参数传递给我的方法? 当然,对这些方法的所有调用都应该获得返回值(如果有)和现在的异常。

是否有一个简单的解决方案可以转换所有这样的调用:

myService.method1(arg0, arg1); 

这样的事情:

executor.execute(myService.method1(arg0, arg1))

我会很感激一些例子。

1 个答案:

答案 0 :(得分:0)

如果您正在使用Java8进行编译,则可以使用lambda表达式简化execute调用:

executor.execute(() -> myService.method1(arg0, arg1));

在Java7或更早版本中,您可以使用一个不太干净的匿名内部类:

executor.execute(new Runnable() {
    @Override
    public void run() {
        myService.method1(arg0, arg1);
    }
});

无论哪种方式,您正在做的是提交一个实现Runnable的对象,以及一个调用相关方法的run()方法。