首页 > 解决方案 > 将数据加载到 Java ExecutorService 的线程中

问题描述

我正在编写服务器以响应相同类型的查询。由于我将有几个客户,我想并行执行任务。在执行任务之前,我需要从文件中加载静态数据——这个过程需要大部分时间。完成后,我可以使用此加载的数据回答任意数量的查询。

我想Executors.newFixedThreadPool(n)用作 my ExecutorService,所以它为我管理所有多线程人员。如果我理解正确,线程创建一次,然后我的所有任务都使用这个线程运行。因此,如果可以在创建数据时将数据加载到每个线程并将其用于将使用该线程运行的所有任务,那么它将非常适合我的问题。

这可能吗?

另一个想法是使用 boolean 创建相同数据的多个副本的数组isInUse。由于并行执行的任务数量是固定的,因此只需选择当前空闲的一个数据实体,将其标记为已占用,并在执行任务结束时将其标记为空闲。但我认为我需要以某种方式在线程之间同步这个布尔参数。

(我需要多份数据,因为它可以在执行任务时修改,但在执行任务后会恢复到初始状态。)

标签: javamultithreadingexecutorservice

解决方案


推荐阅读