代号一 RESTfulWebServiceClient 线程

Codename One RESTfulWebServiceClient Threads

我有一个调用休息服务并显示输出的简单程序。

问题是在 rest 方法之前更新显示 returns。

我已经尝试使用调用和阻止,但是 .find 方法似乎 运行 在它自己的线程中?异步

系统输出是这样的;

之前

之后

姓氏

System.out.println("Before");
userClient  = new RESTfulWebServiceClient("http://localhost:8080/MyService/api/person");

Display.getInstance () 
    .invokeAndBlock(() -> {
userClient.find(
            new Query().id("id"), rowset -> {
        for (Map m : rowset) {
            person = new JSONObject(m);
            System.out.println(person.getString("surname"));
        }
    }
}
System.out.println("After");

我找到了一个可行的解决方法。

如我所见,问题出在 RESTfulWebServiceClient 的 .find 方法 class。 NetworkManager.getInstance().addToQueue(req); 这一行在进行调用之前创建对其余网络服务的异步调用和 returns 方法。

为了解决这个问题,我在我的项目中重新创建了 RESTfulWebServiceClient class 并从 github.

复制了源代码

然后我更改了

NetworkManager.getInstance().addToQueue(req);

NetworkManager.getInstance().addToQueueAndWait(req);

这会导致方法在返回之前完成其余调用。