Java中的线程池

5

我使用Java编写应用程序,使用线程池。首先,我创建一个新的线程池:

private ExecutorService threadExecutor = Executors.newFixedThreadPool( 20 );

然后我创建一些Runnable对象。之后,我不时地执行我的线程池,并传递相同的Runnable对象:

threadExecutor.execute(serverRunnable);

我每20秒执行一次这个线程池。我的问题是,线程执行器会停止工作大约5分钟左右。它不执行可运行对象。我注意到当我增加参数时:

Executors.newFixedThreadPool( 20 );

当线程池的数量从20增加到100时,线程池将会工作更长时间。有人能解释一下为什么线程池会停止工作吗?

附注:我在Android中编写此代码。


1
请发布您的serverRunnable对象代码。 - artbristol
3
你的Runnable是否能正确停止?如果它们从未结束它们的run()方法,你的线程池将被耗尽并且execute()将会锁定等待池中的一个插槽可用。 - Viruzzo
我举个例子,我使用serverRunnable。我将许多不同的Runnable传递给ThreadPoll,它们都会停止。其中一些只是做一些琐碎的工作,比如在日志中写入一些内容。 - klemens
我认为我的run()函数正确停止了。我没有在其中使用while循环或其他类似的东西。 - klemens
1个回答

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接