我不熟悉Java中的多线程,在查看Java virtual machine - maximum number of threads之后,看起来Java / Android应用程序可以运行的线程数量没有限制。但是,是否有可取的限制?我的意思是,是否存在许多线程,如果你超过这个数字那么它是不明智的,因为你无法确定什么线程什么时候做什么?我希望我的问题有道理。
答案 0 :(得分:1)
有一些明显的限制,但它们与跟踪它们并没有任何关系。
<强> TL; DR 强>
取决于操作系统和硬件:在服务器上创建数千个线程很好,在台式机上你应该将自己限制在50-200并仔细选择你用它们做什么。
注意: Androids默认并建议“UI多线程助手” - AsyncTask实际上不是一个线程。这是从ThreadPool调用的任务,因此使用它没有限制或惩罚。它产生的线程数有一个上限,并重用它们而不是创建新线程。大多数Android应用程序应该使用它而不是生成自己的线程。一般来说,线程池相当普遍,除非你被迫进行阻塞操作,否则它是一个很好的选择。