多线程如何在Android中运行?

时间:2012-12-27 11:30:17

标签: android multithreading

我试图并行运行4个线程,但失败了。

我尝试过使用同步wait()notify() CyclicBarrier ThreadPoolExecutor CountDownLatch AsyncTask和其他许多人,但是没有管理线程并行。

我们可以并行运行4个线程(即在android中同时运行)吗?怎么样?

注意:我正在使用AudioRecordAudioTrack API处理音频流。

3 个答案:

答案 0 :(得分:15)

  

我们可以在Android中同时运行4个线程吗?

是的,您可以并行运行4个线程。添加更多线程通常会有所帮助,但在某些时候,它们会导致性能下降。但是4个线程不会导致问题。

  

问题:我无法运行线程并行,即第一个线程运行:   4次,第2次第3次,第4次仅1次。如何让它运行(尝试使用   提到线程但是没有成功运行所有并行线程并行?

如果您的目标只是让所有线程都积极处理,我建议您更多地查看Java thread pools(和Executors)。

  

android支持MULTI-THREADING?如果是,多线程如何工作   机器人??

是的,Android支持多线程。实现它的最佳方式(线程池和执行程序除外)是AsyncTask

AsyncTask允许您实现doInBackground(),您的线程可以在其中执行任务。这与您从Thread获得的功能类似。

当您覆盖onPreExecute()onPostExecute()这两者都在UI线程上执行时,会发生真正的魔力。这样可以防止您收到有关未附加活动的消息。

answer包含AsyncTask的一个小代码示例,可以帮助您入门。

另外,请查看Android中的Handlers

编辑 - 我在研究过程中发现,录制,发送和接收音频都是非常互动的过程,需要同步和IO资源。最好的解决方案可能是,您可以为每个操作创建单独的AsyncTask,以便每个操作都在其单独的AsyncTask中执行。

答案 1 :(得分:2)

  1. 您可以运行4个不同的线程,但为了并行(同时)执行,您需要支持它。如果你有一个核心cpu,那么线程被执行的顺序取决于调度程序,并且每次只执行一个线程
  2. 执行的顺序和时间取决于调度程序。
  3. 是的。您可以依赖AsyncTask或java功能(例如Executors)

答案 2 :(得分:-5)

您可以使用异步任务并行运行它们。