【问题标题】:Max thread number for one application?一个应用程序的最大线程数?
【发布时间】:2010-01-26 09:36:14
【问题描述】:

我想知道一个应用程序的最大线程数。

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

如果我能知道在当前活动中创建的最大线程数,我可以限制活动线程。

我正在使用线程进行 http 连接并捕获 Http 响应。

提前致谢。

【问题讨论】:

    标签: android


    【解决方案1】:

    据我所知,代码没有强制执行的最大值。话虽如此,即使对于网络 I/O,收益递减也会很快出现,因为 Android 设备的 CPU 速度相当小,而且 RAM 相当有限。

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

    【讨论】:

    • AsyncTask 很棒,唯一的问题是在某些 Android 版本上,您不能让两个任务并行运行(这些任务是串行执行的),但在其他版本上可以。除了从源代码重写 AsyncTask 之外,还有什么解决方法吗?
    • @Tomasz:“除了从源代码重写 AsyncTask 之外,有什么解决办法吗?” -- 在 API 级别 11+ 上使用 executeOnExecutor() 选择加入 THREAD_POOL_EXECUTOR
    • 或者使用 ThreadPoolExecutor 进行专门的任务,你有更大的控制权。
    • 拜托,现在使用协程(这是 9 年后)。 AsyncTask 冗长或缺乏灵活性和 Kotlin 挂起功能的设施。
    • 不要使用 AyscTask,我再说一遍 不要使用 AyscTask :D
    猜你喜欢
    • 2010-09-13
    • 2011-05-07
    • 2016-10-18
    • 2011-04-20
    • 2015-11-04
    • 2016-09-14
    • 1970-01-01
    • 2011-08-03
    相关资源
    最近更新 更多