【发布时间】:2020-12-20 20:03:53
【问题描述】:
这是一个twitter4j 依赖项。我正在获取用户的关注者数据。
以下代码需要将近 15 秒 才能完成获取 45 个用户 数据的数据。可以做些什么来使这段代码运行得更快?或者我应该粗略地添加我的项目有什么逻辑吗?
多线程?并发?
ArrayList<String> list = new ArrayList<String>();
int i = 0;
try {
IDs ids = twitter.getFollowersIDs(-1);// ids
do {
for (long id : ids.getIDs()) {
String location = twitter.showUser(id).getLocation();
if(location.length() != 0) {
list.add(location);
System.out.println(location);
}
i++;
}
} while (ids.hasNext());
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(i);
return list;
【问题讨论】:
-
并行性可能会有所帮助,是的。大概
twitter.showUser是一个阻塞调用,因此对于每个用户ID,您都在等待整个往返行程完成,然后再继续下一个。不是最优的 -
也许您可以使用 lookupUsers (github.com/Twitter4J/Twitter4J/blob/…) 并运行结果。这可能会更快。
标签: java multithreading api twitter twitter4j