在多线程程序中使用 Executer 服务

Posted

技术标签:

【中文标题】在多线程程序中使用 Executer 服务【英文标题】:Using Executer service in multithreaded program 【发布时间】:2018-04-18 15:01:55 【问题描述】:

我正在使用执行器服务来使用多线程。我有大量的任务。当我使用executer.submit() 逐一提交这些任务时,堆空间会逐渐增加并且慢慢地,java 进程会变慢。我应该如何解决这个问题?

例如:获取所有数据后

while(resultset.hasnext())

I am thread objects here //
RunnableObject o = new RunnableObject(data);
executer.submit(o);

【问题讨论】:

问题太抽象,没有代码。 【参考方案1】:

根据您的代码,我了解到,您正在从数据库中检索结果并将每个重新编码分配给一个线程,对吗?

在这种情况下,如果您获得 10 条记录,您将创建 10 个线程,但从长远来看,如果您获得 1000 条记录,您可以创建 1000 个线程。这将使您的应用程序变慢。

我的解决方案是使用像 this 这样的线程池。

【讨论】:

以上是关于在多线程程序中使用 Executer 服务的主要内容,如果未能解决你的问题,请参考以下文章

如何在多线程或基于 wcf 服务的应用程序中正确使用事件?

在多线程应用程序中使用 mongodb 的正确方法

如果我在多线程服务器程序中运行并行代码会发生啥? [复制]

如何在多线程环境中使用嵌入式 MySQL?

在多线程 HTTP 服务器中发送后,如何干净地关闭套接字?

在多线程应用程序中使用 opencv waitKey()