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



返回字符串(fileName(的Java方法在内部消耗内存,用于无法进一步优化的少数映像操作,比如说每次方法执行消耗20 MB堆空间。

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

而一些n个线程是并行处理,这就产生了内存不足。

要逃离记忆堆空间,你能提供你的建议吗仅设置固定数量的线程来执行此方法。

public String deleteImageAndProvideFile(String inputImage, int deletePageNum){
// process image
//find page and delete
//merge pages to new file
// return new file Name
}

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

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

  • newFixedThreadPool(int nosThreads)(javadoc(

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

ExecutionService文档解释了如何使用API(javadoc(。您提交任务并获得Future对象,这些对象可用于等待给定任务完成。

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

相关内容

  • 没有找到相关文章

最新更新