【发布时间】:2011-06-21 22:12:58
【问题描述】:
这是我的问题:
我有一大堆相同的对象。这些对象与服务器交互。从服务器获取数据需要 4 或 5 秒,因为服务器很慢。
现在我需要所有对象来获取数据。所以我为每个对象调用 MyObject.getData() 。我可以做一个系列,但 20 个对象,每个需要 5 秒太慢了。我认为我应该使用线程并将每个对象放在自己的线程上。
这是我的问题:
如果我让对象扩展线程。将调用 o MyObject.getData();在该对象的线程中运行,还是在调用该方法的线程中运行?我知道我可以使用 Thread.Run() 来让对象运行,但这不是我想要的。我想让方法随心所欲地运行。
那我该怎么做呢?
非常感谢。
【问题讨论】:
-
Thread.run()不会“让对象运行”——这是一个常见的误解。您要调用的是Thread.start()。 -
最佳实践是不要扩展线程。相反,您应该实施
Runnable或Callable(就像大多数答案所暗示的那样)。使用这些接口,您仍然可以根据需要手动启动Thread对象,但可以轻松切换到使用ExecutorService。
标签: java multithreading methods