首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我需要一个解决方案的Java方法,返回一个字符串值执行只有n个线程在JVM中

我需要一个解决方案的Java方法,返回一个字符串值执行只有n个线程在JVM中
EN

Stack Overflow用户
提问于 2020-04-17 18:51:29
回答 1查看 34关注 0票数 0

返回字符串(FileName)的Java方法在内部消耗内存用于一些无法进一步优化的图像操作,比方说每次方法执行消耗20MB HeapSpace。

此方法作为ProcessingImageData的一部分执行,需要将文件名作为输出返回给RestWebService调用者。

而一些n个线程是并行处理的,这提供了OutofMemory。

为了摆脱OutofMemory-HeapSpace,你可以提供你的建议,比如只设置固定数量的线程来执行这个方法。

代码语言:javascript
复制
public String deleteImageAndProvideFile(String inputImage, int deletePageNum){
        // process image
        //find page and delete
        //merge pages to new file
        // return new file Name
}
EN

回答 1

Stack Overflow用户

发布于 2020-04-17 19:09:35

如果您有许多任务,但希望限制执行这些任务的线程数量,请使用具有有界线程池的ExecutorService

Executors类有一个帮助器方法,用于创建所需的内容:

  • newFixedThreadPool(int nosThreads) (javadoc)。

根据要使用的内存量调整nosThreads参数。

ExecutionService文档介绍了如何使用接口(javadoc)。您可以提交任务并获取Future对象,这些对象可用于等待给定任务完成。

在您的用例中,您的某个web请求可能会将任务提交给“全局”executor服务,然后等待任务完成。或者,您可以设计您的系统,使处理过程与web请求异步完成;例如,在一个请求中提交一个任务,然后发出另一个请求,看看它是否已经完成。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61269840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档