在Android中的两个工作线程之间传递数据是一个好主意吗?

时间:2013-02-20 18:01:14

标签: java android multithreading

我决定将一个后台任务拆分为两个线程。所以,我有一个ScheduledExecutorService来管理两个工作线程并每隔3秒定期运行它们。他们实施接下来的两项任务:

  1. 从服务器
  2. 检索数据
  3. 使用此数据进行的一些操作
  4. 因此,在第一个线程从服务器检索大量数据之后,它将它传递给第二个工作线程,后者将其转换。

    但我认为它是某种反模式,因为我会这样做 - 一个线程将依赖于另一个线程,并且从多线程应用程序设计的角度来看它是不好的。我是对还是不对,这个解决方案还不错?任何解释,特别是从设计的一般点,将不胜感激。

2 个答案:

答案 0 :(得分:3)

这是一个典型的producer/consumer示例,您可以在其中考虑数据检索线程 a producer数据操作线程消费者。所以我在设计中没有看到任何错误。

您可以使用实现concurrent.BlockingQueue的适当类在线程之间传递消息,主要是从producerconsumer

答案 1 :(得分:0)

一个帖子。伪:

while(true){
  dateTime start=now();
  retrieveData;
  transformData;
  dateTime end=now();
  dateTime elapsed=end-start;
  int msElapsed=dateTimeToMs(elapsed);
  if (msElapsed>0) Sleep(msElapsed);
};

没有线程间通信,没有同步,没有队列,没有重叠,没有问题。