我有这样的服务有很多方法:
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))
我会很感激一些例子。
答案 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()
方法。