在 Java 6 中等待方法结果(超时)的更优雅的方式

Posted

技术标签:

【中文标题】在 Java 6 中等待方法结果(超时)的更优雅的方式【英文标题】:More elegant way to wait for a method result (with timeout) in Java 6 【发布时间】:2017-11-15 16:56:05 【问题描述】:

我正在尝试在 Java 6 中找到一种方法来等待来自读取数据库等待某些信息的方法的结果。

实际代码与此非常相似:

Result result = getSomeResult();
Long maxTries = 10;
Long sleepTimeInMs = 2000; // 10 tries and 2000 ms for each call is 20000 ms of timeout in total

int tries = 0;
while (tries < maxTries && (result == null || result.isProcessing())) 
    Thread.sleep(sleepTimeInMs);
    result = getSomeResult();
    tries++;

在上面的代码中,我不只是在等待结果;我正在等待 not null 结果并处于特定条件(未处理)。

谢谢!

【问题讨论】:

在未来的承诺中包装它 我想你会在这里找到答案:***.com/questions/4817933/… 或这里:***.com/questions/26311470/… deadcoderising.com/… @ΦXocę웃Пepeúpaツ 未来等待该方法返回一些结果,但我正在等待一个“非空”且不是“处理”的结果。 @GriffeyDog,抱歉,我使用的是 Java 6。我将编辑问题以添加此信息。 【参考方案1】:

这是一种延迟运行部分代码的方法,您可以对其进行延迟

        new Handler(Looper.getMainLooper()).postDelayed(new Runnable() 
        @Override
        public void run() 
          //the action you want to do after reading database
        
    , delay_time);

或者你可以让你的读取数据库的方法“异步”

【讨论】:

以上是关于在 Java 6 中等待方法结果(超时)的更优雅的方式的主要内容,如果未能解决你的问题,请参考以下文章

等待超时模式

在环绕的一维数组网格中寻找邻居的更优雅的方法?

在 Swift 中用数组序列化我自己的对象的更优雅的方法是啥

等待管理服务启动时超时。120 秒

线程的状态

使用 appium 执行量角器脚本时等待异步脚本结果超时