【发布时间】:2014-05-12 19:09:39
【问题描述】:
我正在从事一个项目,其中我有多个接口和两个需要实现这两个接口的实现类。
假设我的第一个接口是 -
public Interface interfaceA {
public void abc() throws Exception;
}
它的实现是——
public class TestA implements interfaceA {
// abc method
}
我这样称呼它——
TestA testA = new TestA();
testA.abc();
现在我的第二个界面是——
public Interface interfaceB {
public void xyz() throws Exception;
}
它的实现是-
public class TestB implements interfaceB {
// xyz method
}
我这样称呼它——
TestB testB = new TestB();
testB.xyz();
问题陈述:-
现在我的问题是 - 有什么办法可以并行执行这两个实现类吗?我不想按顺序运行它。
意思是,我想并行运行TestA 和TestB 实现?这可以吗?
我想在这里使用 Callable 但不确定如何在这里使用带有 void 返回类型的 Callable -
我们以TestB类为例:
public interface interfaceB {
public void xyz() throws Exception;
}
public class TestB implements interfaceB, Callable<?>{
@Override
public void xyz() throws Exception
{
//do something
}
@Override
public void call() throws Exception
{
xyz();
}
}
上面的代码给出了编译错误..
更新:-
看起来很多人建议使用 Runnable 而不是 callable。但不知道如何在这里使用 Runnable 以便我可以并行执行TestA and TestB。
【问题讨论】:
-
您可以使用
Void代替void并返回null作为虚拟返回值。 -
您可能希望使用
Runnable而不是Callable。 -
@ajb:如果可能的话,您能否提供一个示例如何在此处使用 Runnable,以便我可以并行执行 TestA 和 TestB。
-
@ajb
Runnable在某些情况下可能不起作用。例如:ExecutorService#invokeAll采用Callable的集合,但 不 采用Runnable的集合。
标签: java multithreading callable