Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多线程在Android中是如何工作的?_Android_Multithreading - Fatal编程技术网

多线程在Android中是如何工作的?

多线程在Android中是如何工作的?,android,multithreading,Android,Multithreading,我试图并行运行4个线程,但失败了 我尝试过使用同步wait()和notify()CyclicBarrierThreadPoolExecutor

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

我尝试过使用同步
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中执行

  • 您可以运行4个不同的线程,但为了并行(同时)执行,您必须支持它。如果您有一个单核cpu,那么执行线程的顺序取决于调度程序,一次只执行一个线程
  • 执行的顺序和时间由调度器决定
  • 是的。您可以同时依赖AsyncTask或java特性(例如执行器)

  • 谢谢但当我尝试异步任务时,我丢失了许多音频数据。i、 我正在使用AsyncTask将音频数据发送到服务器,发送它需要自己的时间。到那时,我将在应用程序端释放语音数据。虽然我还没有遇到任何异步任务的问题,但如果您想使用并发线程,您可以查看线程池和执行器。我也尝试过。。我正在录制每40毫秒16Kb的音频数据。并行运行另一个线程需要时间。在录制音频的同时并行运行的还有什么。可能存在一些同步问题。可能存在死锁情况,因为您提到的所有操作都是交互式的,它们都需要使用系统资源。我会看看如何解决这个问题,然后再给你回复。但这确实是一项复杂的任务。你可以使用异步任务并行运行它们。你能详细说明问题是什么吗?@Henry我不能同时运行所有4个线程。如何实现这一点?根据第一点,这是否意味着只有一个线程可以在单核上运行?线程的并发运行如何?