Java中的线程池

时间:2012-01-09 09:58:04

标签: java android multithreading

我使用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中编写此代码

1 个答案:

答案 0 :(得分:3)

首先,如果您想要每20秒执行一次执行任务,请尝试使用ScheduledThreadPoolExecutor:http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/ScheduledThreadPoolExecutor.html

似乎你的runnable没有终止 - 这样它会在一段固定的时间后超过20个线程。如果你的runnable正常终止 - 你将能够无限期地使用你的执行者。