我有一个字符串,我正在对其进行解析并将其存储到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具有对象。有什么建议?

最佳答案

Java默认是逐行执行的,即默认情况下本质上是同步的。这意味着解析器一旦完成,就只会移动到下一行。您将不需要任何异步方式来实现它。只需检查您的响应obj和解析器的正确性即可。

09-25 18:40