Android应用程序抛出java.util.concurrent.RejectedExecutionException:pool = 128/128,queue = 10/10

时间:2013-04-22 08:17:35

标签: android android-asynctask iostream

我的生产Android应用程序抛出此异常。当我分析批评时,我注意到我的许多异步任务都没有完成。他们挂在

ClientSession.java:361

responseMessage = (AMessageStrategy) objectInputStream.readObject();

ClientSession.java:321

objectInputStream = new ObjectInputStream(new BufferedInputStream(inputStream));

对SO进行了一些研究并找到this link。但是没有找到任何将RejectedExecution与Hang问题联系起来的问题。因此这个问题。

org.apache.harmony.luni.platform.OSNetworkSystem.read(Native Method)
dalvik.system.BlockGuard$WrappedNetworkSystem.read(BlockGuard.java:273)
org.apache.harmony.luni.net.PlainSocketImpl.read(PlainSocketImpl.java:461)
org.apache.harmony.luni.net.SocketInputStream.read(SocketInputStream.java:85)
org.apache.harmony.luni.net.SocketInputStream.read(SocketInputStream.java:65)
java.io.BufferedInputStream.fillbuf(BufferedInputStream.java:140)
java.io.BufferedInputStream.read(BufferedInputStream.java:324)
java.io.DataInputStream.readToBuff(DataInputStream.java:159)
java.io.DataInputStream.readShort(DataInputStream.java:375)
java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:2365)
java.io.ObjectInputStream.<init>(ObjectInputStream.java:433)
com.mcruiseon.common.communication.ClientSession$SendQueue.<init>(ClientSession.java:321)

org.apache.harmony.luni.platform.OSNetworkSystem.read(Native Method)    
dalvik.system.BlockGuard$WrappedNetworkSystem.read(BlockGuard.java:273)
org.apache.harmony.luni.net.PlainSocketImpl.read(PlainSocketImpl.java:461)
org.apache.harmony.luni.net.SocketInputStream.read(SocketInputStream.java:85)
org.apache.harmony.luni.net.SocketInputStream.read(SocketInputStream.java:65)
java.io.BufferedInputStream.fillbuf(BufferedInputStream.java:140)
java.io.BufferedInputStream.read(BufferedInputStream.java:225)
java.io.FilterInputStream.read(FilterInputStream.java:115)
java.io.ObjectInputStream.checkReadPrimitiveTypes(ObjectInputStream.java:466)
java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:899)
java.io.ObjectInputStream.readObject(ObjectInputStream.java:2262)
java.io.ObjectInputStream.readObject(ObjectInputStream.java:2217)
com.mcruiseon.common.communication.ClientSession$SendQueue.run(ClientSession.java:361)

我有

  • 在输出流创建后立即刷新
  • 在输入流之前创建输出流
  • 写完后冲洗

我仍然得到了悬念,这是在产品上市后2个月发生的随机错误。人们有什么想法吗?

2 个答案:

答案 0 :(得分:0)

如果您在适配器上进行下载以在每个位置(列表中)获取一个图像,那么您可能正在重复循环,直到Asynctask上的128个线程。 抱歉,我的英语不好。

答案 1 :(得分:0)

在客户端上,我创建了新套接字而没有关闭旧版套接字。这些插座堆在一起。在大约128个套接字后,android max's out并抛出此异常。

我创建了一个超时并在不活动时关闭旧套接字。