代号一 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);
这会导致方法在返回之前完成其余调用。
我有一个调用休息服务并显示输出的简单程序。
问题是在 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);
这会导致方法在返回之前完成其余调用。