【发布时间】:2019-08-06 12:04:17
【问题描述】:
我有一个字符串,我正在解析它并将其存储到 JsonArray 中,然后对其进行迭代。有一个竞争条件,我的解析器没有完成,控制继续前进。我希望先完成然后继续。
我试图等待并通知。它不工作。
Response res = run(el);
JsonParser parser = new JsonParser();
JsonElement jsonTree = parser.parse(res.body().string());
try {
wait();
} catch(InterruptedException e) {
e.printStackTrace();
}
System.out.println("jsontree : "+ jsonTree);
JsonArray array=jsonTree.getAsJsonArray();
notifyAll();
if(jsonTree.isJsonArray()) {
System.out.println("I am JSONARRAY");
}
for(JsonElement element: array) {
count++;
System.out.println("count "+ count);
}
现在 jsonTree 是空的,看起来像这样:[]。我希望 jsonTree 有对象。有什么建议吗?
【问题讨论】:
-
你能提供必要的类来编译它吗?在您想要等待线程完成的通常情况下,您将使用 Thread.join() 方法。
-
JsonParser.parse是一个阻塞调用,所以不会有竞争条件。你确定res.body()实际上返回的是一个非空的json吗?