我试图并行运行4个线程,但失败了。
我尝试使用同步的wait()
和notify()
、CyclicBarrier
、ThreadPoolExecutor
、CountDownLatch
、AsyncTask
等方法,但都没有成功地并行运行线程。
在Android中是否能够并行运行4个线程(即同时运行)?如何做到?
注意:我正在使用AudioRecord
和AudioTrack
APIs来进行音频流传输。
我试图并行运行4个线程,但失败了。
我尝试使用同步的wait()
和notify()
、CyclicBarrier
、ThreadPoolExecutor
、CountDownLatch
、AsyncTask
等方法,但都没有成功地并行运行线程。
在Android中是否能够并行运行4个线程(即同时运行)?如何做到?
注意:我正在使用AudioRecord
和AudioTrack
APIs来进行音频流传输。
在Android中,我们可以同时运行4个线程吗?
是的,您可以并行运行4个线程。添加更多线程通常会有所帮助,但在某些时候,它们会导致一些性能下降。但是4个线程不会引起问题。
问题:我无法并行运行线程,即第一个线程运行:4次,第二个,第三个和第四个仅运行1次。如何使其并行运行(尝试使用上述线程,但未能成功运行所有线程并行)?
如果您的目标仅是让所有线程都处于活动状态,请查看Java线程池(以及更通用的执行者Executors )。
Android支持多线程吗?如果是的话,Android中的多线程是如何工作的?
是的,Android支持多线程。除了线程池和Executor之外,实现它最常用的方法是使用AsyncTask异步任务。
AsyncTask允许您实现doInBackground()
,其中您的线程可以快速地完成其任务。这类似于您从Thread
中获得的功能。
真正的魔力发生在您覆盖的onPreExecute()
和onPostExecute()
中,这两个方法都在UI线程上执行。这应该可以防止出现Activity未附加的消息。
这个答案包含一个小的AsyncTask
代码示例,可以帮助您入门。
另外,请看一下Android中的处理器
编辑- 我在研究过程中发现,录制、发送和接收音频都是相当交互式的过程,它们需要同步和IO资源。最好的解决方案是,为每个操作创建单独的AsyncTask
,以便每个操作都在其单独的AsyncTask
中执行。