Java android上的线程限制?

Java android上的线程限制?,java,android,multithreading,Java,Android,Multithreading,android上有线程限制吗 我在应用程序中创建了很多线程,在编译时线程数是未知的。如何获得允许的线程数 我得到: 05-11 16:24:19.441 11131-11194/? E/dalvikvm﹕ Thread creation failed (err=Invalid argument) 05-11 16:24:19.461 11131-11131/? A/libc﹕ Fatal signal 11 (SIGSEGV) at 0x00000010 (code=1), thread 1

android上有线程限制吗

我在应用程序中创建了很多线程,在编译时线程数是未知的。如何获得允许的线程数

我得到:

05-11 16:24:19.441  11131-11194/? E/dalvikvm﹕ Thread creation failed (err=Invalid argument)
05-11 16:24:19.461  11131-11131/? A/libc﹕ Fatal signal 11 (SIGSEGV) at 0x00000010 (code=1), thread 11131 (id.mykeyboard)

处理异常不是一个好主意,因为我必须选择另一种方法来处理它,并且该方法取决于最大线程数限制。

我知道代码没有强制执行最大线程数。这就是说,即使对于网络I/O,收益递减也会相当快地开始,因为Android设备的CPU速度相当小,RAM也相当有限


否则,请使用您在问题中提到的另一种“处理方法”。

为什么不使用AsyncTask而不是您自己的线程?它使用了一个线程池,可以解决关于最大线程数的任何问题。AsyncTask是纯android的东西。我需要先在纯java测试中测试并发性。对我来说,使用线更舒服。不确定使用AsyncTask是否可以解决此问题,所以为什么不使用线程池?使用线程池无法解决此问题,因为它意味着最大线程数限制线程数将并发运行。我需要更细粒度的控制-如果需要线程计数,如果小于最大线程数限制,我将使用线程。否则,我将使用完全不同的方法。最大线程数限制是硬件、JVM和操作系统特定的。理论上,MAX_THREADS_LIMIT=进程的用户地址空间除以线程堆栈大小,但几乎不可能实时找到绝对数。我已经回答说,使用AsyncTask并不能解决问题。使用池(对于AsyncTask或ThreadPool)意味着只并发运行N个线程,并且不会像预期的那样减少调用时间。好的,谢谢你让我知道。我没看见!我要删掉那一段。