java - 如何安排函数调用在队列中执行?

标签 java

我有一个界面

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/

相关文章:

java - 装饰日期格式

java - 在 Java 上制作数据结构的最惯用方法

java - EntityManager 始终为 null 并且未正确注入(inject)

java - 如何在Java中实现哈希函数?

java - 接口(interface)作为方法参数

java - 将 Red5 Server 集成到现有 Java 应用程序中

java如何将字符串转换为图标来执行setIcon

java - 在 Java Web 应用程序中放置 .p12 文件的正确位置?

java - 这个使用模拟对象的 Spring 单元测试到底是如何工作的?

java - 如何创建滑动面板