gpt4 book ai didi

java - 异步运行任务并在线程 Activity 后返回

转载 作者:行者123 更新时间:2023-12-01 10:17:42 24 4
gpt4 key购买 nike

我一直在使用线程向链接发送 GET 请求(一切都很好)。但是,我需要它异步运行,所以我创建了一个新线程并运行它。问题是我需要它在线程执行完毕后返回值 returnVar[0] 。我尝试过使用 !thread.isActive 进行 while 循环,但是当然,方法主体需要一个 return 语句。我已经尝试过您即将看到的 CountdownLatche ,但它们暂停了我不想要的主线程。任何想法都将不胜感激。

代码:

    public String getUUID(String username) {
final String[] returnVar = {"ERROR"};
final CountDownLatch latch = new CountDownLatch(1);

Thread thread = new Thread(() -> {

final String[] response = {"ERROR"};
final JSONObject[] obj = new JSONObject[1];

response[0] = ConnectionsManager.sendGet("https://api.mojang.com/users/profiles/minecraft/" + username);

try {
obj[0] = (JSONObject) new JSONParser().parse(response[0]);
returnVar[0] = (String) obj[0].get("id");
} catch (ParseException e) {
e.printStackTrace();
}

latch.countDown();
});

thread.start();


try {
latch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}

return returnVar[0];
}

最佳答案

我认为您应该考虑使用Callable而不是Runnable。请参阅this thread以获得解释和示例。

此外,您在一个线程中使用 CountDownLatch 有点奇怪。锁存器对于确保多个线程尽可能统一地启动非常有用,而不是某些线程在更传统的启动中“领先”。

关于java - 异步运行任务并在线程 Activity 后返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35804017/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com