如何在Java中声明可调用以执行返回void的函数?

如何在Java中声明可调用以执行返回void的函数?,java,concurrency,future,callable,Java,Concurrency,Future,Callable,假设我想异步运行静态方法foo void foo() throws Exception {...} 由于foo引发异常,我希望创建一个Callable并调用ExecutorService.submit以获得一个未来 现在我想知道如何正确地声明那些可调用的和未来的。 我应该申报吗 Callable<Void> and Future<Void>? 可调用和未来? 我是否应该声明它们是可调用的和未来的 对 Void类似于包装类Integer,Long等。对于基本类型in

假设我想异步运行静态方法
foo

void foo() throws Exception {...} 
由于
foo
引发异常,我希望创建一个
Callable
并调用
ExecutorService.submit
以获得一个
未来

现在我想知道如何正确地声明那些
可调用的
未来的
。
我应该申报吗

Callable<Void> and Future<Void>?
可调用和未来?
我是否应该声明它们是可调用的
和未来的


Void
类似于包装类
Integer
Long
等。对于基本类型
int
Long
等,可以说它是
Void
的包装类,尽管
void
并不是一种真正的类型。

我认为你应该声明它们
可调用
未来
。然后,您可以根据需要实现它们,包括
Callable
Future

Yes.Callable。但是void与void不兼容,因此您必须从返回void的包装器方法调用foo()。为什么不调用callable和Future?@TomF Why not callable我不知道,这就是为什么我问为什么我遗漏了大写字母V。由于您必须返回void类型的结果,您的Callback#call()方法必须返回null。因此,由于您必须返回,您可以使用Boolean作为返回类型并返回Boolean.TRUE(或者在出现错误的情况下返回Boolean.FALSE)。所以它可能有更好的可读性。不,它在OP询问的情况下不起作用。