多线程在Android中是如何工作的?
我试图并行运行4个线程,但失败了 我尝试过使用同步多线程在Android中是如何工作的?,android,multithreading,Android,Multithreading,我试图并行运行4个线程,但失败了 我尝试过使用同步wait()和notify()CyclicBarrierThreadPoolExecutor
wait()
和notify()
CyclicBarrier
ThreadPoolExecutor
AsyncTask
和许多其他方法,但没有并行运行线程
我们是否可以并行运行4个线程(即在android中同时运行)?怎么做
注意:我正在使用AudioRecord
和AudioTrack
API处理音频流
我们可以在Android中同时运行4个线程吗
是的,您可以并行运行4个线程。添加更多线程通常会有所帮助,但有时会导致性能下降。但是4个线程不会导致问题
问题:我无法并行运行线程,即第一个线程运行:
4次,第2次第3次第4次仅1次。如何使其运行(已尝试使用
提到的线程,但无法运行所有线程(并行)并行
如果您的目标只是让所有线程都积极地进行处理,那么我建议您看看Java(更一般地说)
android支持多线程?如果是,多线程如何在
安卓
是的,Android支持多线程。最首选的实现方式(线程池和执行器除外)是
允许您实现doInBackground()
,线程可以在这里开始执行任务。这与您从线程
获得的功能类似
当您重写onPreExecute()
和onPostExecute()
,这两个都在UI线程上执行时,真正的神奇就发生了。这将防止您收到未附加活动的消息
这包含了一个小型的AsyncTask
代码示例,可以帮助您开始
另外,看看安卓系统
编辑-我在研究中发现,录音、发送和接收音频都是非常互动的过程,它们需要同步和IO资源。最好的解决方案是,您可以为每个操作创建单独的AsyncTask,以便每个操作都在其单独的AsyncTask中执行
谢谢但当我尝试异步任务时,我丢失了许多音频数据。i、 我正在使用AsyncTask将音频数据发送到服务器,发送它需要自己的时间。到那时,我将在应用程序端释放语音数据。虽然我还没有遇到任何异步任务的问题,但如果您想使用并发线程,您可以查看线程池和执行器。我也尝试过。。我正在录制每40毫秒16Kb的音频数据。并行运行另一个线程需要时间。在录制音频的同时并行运行的还有什么。可能存在一些同步问题。可能存在死锁情况,因为您提到的所有操作都是交互式的,它们都需要使用系统资源。我会看看如何解决这个问题,然后再给你回复。但这确实是一项复杂的任务。你可以使用异步任务并行运行它们。你能详细说明问题是什么吗?@Henry我不能同时运行所有4个线程。如何实现这一点?根据第一点,这是否意味着只有一个线程可以在单核上运行?线程的并发运行如何?