我正在使用执行程序服务来使用多线程。我有很多任务。当我使用executer.submit()
一个接一个地提交这些任务时,堆空间会逐渐增加,而且java进程会慢慢地变慢。我该如何处理这个问题?
例如:获取所有数据后
while(resultset.hasnext())
{
I am thread objects here //
RunnableObject o = new RunnableObject(data);
executer.submit(o);
}
答案 0 :(得分:0)
根据您的代码,我了解到,您正在从数据库中检索结果并将每个重新编码分配给一个线程,对吗?
在这种情况下,如果你得到10条记录,你将创建10个线程,但从长远来看,如果你得到1000条记录,你可以创建1000条线程。这会使你的应用程序变慢。
我的解决方案是使用this等线程池。