gpt4 book ai didi

java - 在 Java 中将methods() 与线程一起使用

转载 作者:行者123 更新时间:2023-12-01 19:16:30 25 4
gpt4 key购买 nike

这是我的问题:

我有一大堆相同的物体。这些对象与服务器交互。由于服务器速度较慢,从服务器获取数据需要 4 或 5 秒的时间。

现在我需要所有对象来获取数据。所以我为每个对象调用 MyObject.getData() 。我可以连续做,但是 20 个对象,每个对象需要 5 秒,太慢了。我认为我应该使用线程并将每个对象放在自己的线程上。

这是我的问题:

如果我让对象扩展线程。将调用 o MyObject.getData();在该对象的线程中运行,还是在调用该方法的线程中运行?我知道我可以使用 Thread.Run() 来让对象运行,但这不是我想要的。我想让方法按照我的意愿运行。

那么我该怎么做呢?

非常感谢。

最佳答案

教科书上的方法可能是这样的:

class GetDataObj implements Callable<Data> {
public Data call(){
//get data
return data;
}
}

然后

ExecutorService exec = Executors.newCachedThreadPool();
Set<Callable<Data>> objects = //get objects;
List<Future<Data>> futures = exec.invokeAll(objects);
for(Future<Data>> future : futures){
Data data = future.get();
//do stuff with data
}
exec.shutdown();

请注意,当您迭代 futures 时,get() 方法将阻塞,直到结果可用于该 DataObj。如果您想等到所有数据都可用,这样就可以了。

关于java - 在 Java 中将methods() 与线程一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6432653/

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