for循环中的java rpc

Posted

技术标签:

【中文标题】for循环中的java rpc【英文标题】:java rpc in for loop 【发布时间】:2012-12-10 11:18:50 【问题描述】:

我在 for 循环中有一个 rpc 调用来接收元素列表。我遇到的问题是在 for 循环完成之前调用了该方法的 return 语句。那么有可能强制return语句等待循环完成吗?

public List<SOMETHING> getList() 
     List<SOMETHING> list = ...;
     for (A FEW REPETITIONS) 
          RPC-CALL() 
            public void onSuccess(List<SOMETHING> result) 
                 list.addAll(result);
            
          
     

     return list;

【问题讨论】:

你使用的是什么 RPC 机制?这些是异步调用吗? 如果您的 rpc 调用在单独的线程/进程中执行,您需要相应地等待。你能放更多代码/让它更清楚吗? for 循环中没有返回语句。在for循环完成之前如何返回? 我正在使用异步调用,因此for循环在rpc调用或完成之前完成 【参考方案1】:

我认为您需要使用CountDownLatch,您可以将计数器初始化为您正在进行的 rpc 调用次数。减少获取 rpc 调用回复的次数,并使用 countDownLatch.await() 等待回复

【讨论】:

我正在使用 java gwt,当我简单地创建一个新的 CountDownLatch 对象时,我得到一个 com.google.gwt.dev.jjs.InternalCompilerException: Failed to get JNode 看起来GWT不支持客户端同步。在这种情况下,您可能需要避免从该方法返回值,而是让调用者提供一些 actionListener 类型的处理程序,您将调用所有处理过的结果。

以上是关于for循环中的java rpc的主要内容,如果未能解决你的问题,请参考以下文章

java for循环中的sleep

JAVA中的for循环

在java中,新循环,也就是增强for循环怎么用?是啥格式?

Java中的for循环(急急急!!!)

Java中的for循环(急急急!!!)

Java中的for循环(急急急!!!)