有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

返回字符串(文件名)的Java方法在内部为一些无法进一步优化的图像操作消耗内存,比如说,每个方法执行消耗20 MB HeapSpace

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

而有些n线程是并行处理的,这会产生内存

要逃离OutofMemory HeapSpace,请提供以下建议: 仅设置固定数量的线程以执行此方法

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

共 (1) 个答案

  1. # 1 楼答案

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

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

    • newFixedThreadPool(int nosThreads)javadoc

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

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

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