gpt4 book ai didi

java - java中的异步处理

转载 作者:行者123 更新时间:2023-12-02 06:54:09 26 4
gpt4 key购买 nike

我正在编写一个 Java API,需要从某些 Web 服务异步获取数据。 API 需要是可移植的,能够在常规 Java SE、Java EE、Android 和 BlackBerry 应用程序中使用,因此我想使用一些 native Java API 来完成此任务(出于可移植性的考虑)。我正在考虑使用 Runnable 接口(interface)将每个请求作为单独的线程分派(dispatch),但我对线程没有太多经验,并且我意识到您需要知道您在做什么才能正确完成它。

使用 Java 异步完成此功能的最佳方法是什么?

最佳答案

您可能想在java.util.concurrent 中使用CachedThreadPoolFixedThreadPool。您需要将 CallableFuture 一起使用,而不是 Runnable,因为您希望从 Web 服务调用返回一个值。

一个非常简单的例子:

public class MyAPI {
public class SomeResponse {
int value; // assumes some very basic service returns {"value":123}
}
// assumes spring 3+
@Autowired RestTemplate restTemplate;

ExecutorService pool = ExecutorService.newCachedThreadPool();

Future<SomeResponse> getData(int someId) {
return cachedThreadPool.submit(new Callable() {
public SomeResponse call() {
return restTemplate.getForObject("http://example.com/some/path/{someId}",SomeResponse.class, someId);
}
});
}
}

此类服务的调用者可以针对 future 调用 .get() 来获取 future 的结果。

关于java - java中的异步处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17616650/

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