我有这种方法可以接受OkHttp#response
:
public static Map<String, Object> getResponseBody(Response response) throws IOException {
return new ObjectMapper()
.readValue(response.body().string(),
new TypeReference<Map<String, Object>>() {
});
}
据我了解,如果多个类使用getResponseBody
,我将遇到大问题,因为它们都将访问相同的Response
。
如果我这样做会解决吗?:
public static Map<String, Object> getResponseBody(Response response) throws IOException {
ResponseBody responseBody = response.body();
String responseString = responseBody.string();
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> map = mapper
.readValue(responseString,
new TypeReference<Map<String, Object>>() {
});
return map;
}
答案 0 :(得分:1)
如评论中所述,
tl; dr :我提供的第一个代码一直都是线程安全的。
每个调用getResponseBody方法的线程都将提供一个 线程本地Response实例。没有共享的静态资源 这里需要同步。它看起来是线程安全的。
非静态线程和非线程线程之间不共享局部变量 静态方法。他们所引用的可能是这样。
第二种方法与第一种方法具有相同的功能,但是 为某些值命名变量。它不会改变它的 行为。