我使用ThreadPool在Java中编写应用程序。首先,我创建了新的ThreadPool:
private ExecutorService threadExecutor = Executors.newFixedThreadPool( 20 );
然后我创建了一些Runnable对象。之后,我不时地执行我的ThreadPool传递相同的Runnable对象:
threadExecutor.execute(serverRunnable);
我每20秒执行一次这个ThreadPool。我的问题是threadExecutor停止工作大约5分钟。它只是不执行Runnable对象。我注意到当我增加参数:
Executors.newFixedThreadPool( 20 );
从20到例如100 ThreadPool将工作更长时间。谁能解释一下为什么ThreadPool停止工作?
聚苯乙烯。我在Android中编写此代码
答案 0 :(得分:3)
首先,如果您想要每20秒执行一次执行任务,请尝试使用ScheduledThreadPoolExecutor:http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/ScheduledThreadPoolExecutor.html
似乎你的runnable没有终止 - 这样它会在一段固定的时间后超过20个线程。如果你的runnable正常终止 - 你将能够无限期地使用你的执行者。