我有一个界面
interface Methods {
void MethodX(int X);
void MethodY(int Y);
// ...
}
接口(interface)实现必须在阻塞队列中安排对接口(interface)方法的调用(以便按顺序执行调用)。有什么简单的方法可以做到这一点吗?
Something.post(...);
其中...是 MethodZ 的一些包装器调用。
对接口(interface)的调用是非阻塞的(它是一个 AIDL 接口(interface)),但在内部,每个下一个调用都应该在前一个调用完成之前执行。
最佳答案
如果我正确理解您的问题,您可以尝试以下操作:
class MethodZExecutor implements Callable<Void> {
private final Methods method;
private int argument;
public MethodZExecutor(Methods method, int argument) {
this.method = method;
this.argument = argument;
}
@Override
public Void call() {
method.MethodZ(argument);
return null;
}
}
然后创建阻塞队列来保存Callable
对象。使项目从此队列中出列,并对它们调用 call()
。
注意:使用匿名内部类可能会发生这一切,具体取决于您的用例:
someQueue.post(new Callable<Void>() {
@Override
public Void call() {
foo.MethodZ(someArgument);
return null;
}
});
关于java - 如何安排函数调用在队列中执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20742628/