我可以在Android应用程序中同时运行多少个Java线程 ?我认为这将是一个依赖于架构的东西,所以有没有办法确定相同的东西?
答案 0 :(得分:2)
我可以在Android应用程序中同时运行多少个Java线程?
这取决于你对#34; run"的定义。和"同时"。
您可以根据需要启动任意数量的线程,主要受内存限制。
同时执行多少个线程取决于设备上的活动核心数。
我认为这将是一个依赖于架构的东西
除了架构,它还取决于发生了什么,因为Android设备会尽可能地关闭内核以节省电池电量。另外,根据线程的作用(例如,阻塞I / O),拥有比核心更多的线程是合理的。
典型的多核线程池大小调整算法是使用2n + 1个线程,其中n是核心数。 AsyncTask
uses this approach,例如:
private static final int CPU_COUNT = Runtime.getRuntime().availableProcessors();
private static final int CORE_POOL_SIZE = CPU_COUNT + 1;
private static final int MAXIMUM_POOL_SIZE = CPU_COUNT * 2 + 1;
此处,线程池将增长到MAXIMUM_POOL_SIZE
,这是内核数量(availableProcessors()
)加上一个的两倍。