一个应用程序的最大线程数是多少?

27

我想了解一个应用程序中的最大线程数。

您知道 Thread.activeCount() 返回正在运行的线程组及其子组中活动线程的数量。

如果我可以知道当前活动的线程数量,就可以限制活动线程。

我正在使用线程进行 HTTP 连接和捕获 HTTP 响应。

提前致谢。

1个回答

22

据我所知,代码没有规定最大值。话虽如此,即使对于网络I/O来说,由于Android设备的CPU速度相当缓慢且内存相对较小,收益会很快降低。

请考虑使用AsyncTask而不是自己创建线程。这将使用由Android设置的线程池,因此它将使用核心Android团队认为对该平台有效的池大小。


AsyncTask非常好用,唯一的问题是在某些Android版本上,您不能同时运行两个任务(任务被串行执行),但在其他版本上可以。除了从源代码中重写AsyncTask之外,还有什么解决方法吗? - Tomasz
6
“有没有其他修复此问题的方法,而不必对 AsyncTask 的源代码进行重写?”-- 在 API 级别 11+ 上使用 executeOnExecutor() 来选择 THREAD_POOL_EXECUTOR - CommonsWare
2
或者使用ThreadPoolExecutor来处理专门的任务,这样你就可以拥有更大的控制权。 - Pointer Null
请使用协程(这是9年后)。 AsyncTask过于冗长,缺乏Kotlin挂起函数的灵活性和便利性。 - Louis CAD
不要使用AyscTask,我重申,不要使用AyscTask :D - Mohamed Ibrahim
好的,只是更新一下(9年后),在Android中使用协程是进行多线程编程的最佳选择。谷歌刚刚弃用了AsyncTask API,转而支持协程。 - Mayokun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接