我应该如何在Runnable中设置我的Future结果?

时间:2015-07-31 10:22:07

标签: java android future

很抱歉,如果解决方案很简单,或者问题已经提出,我开始使用Java,我找不到这个问题的答案。

基本上,我寻求未来/承诺机制,例如像C ++ 11提供的那样。似乎Android上的Java不提供此功能。我会返回一个未来,其中的值可以由听众设定。

以下是我正在努力的代码:

class SettableFutureTask extends FutureTask<Boolean> {
  public void setValue (boolean value) {
    set (new Boolean (value));
  }
}

Future<Boolean> future = new SettableFutureTask (new Runnable () {
  public void run () {
    ...
    mManager.setListener (new Listener (SettableFutureTask.this));
  }
});
return future;

目标是听众将设定未来的价值,因此SettableFutureTask提供公开setValue()

我对此代码的问题是从SettableFutureTask中的run()方法中访问Runnable的实例。我也尝试重写某种Runnable和FutureTask类来实现这个目的,但没有用。

我该如何解决这个问题?谢谢,

1 个答案:

答案 0 :(得分:0)

如果要从run()访问实例,可以尝试将未来声明为final,因此可以从方法范围内获取:

final Future<Boolean> future = new SettableFutureTask (new Runnable () {
  public void run () {
    ...
    mManager.setListener (new Listener (future));
  }
});