我有一个大图,它在 Java Servlet 中处理以用于路由目的。Graph 有 100k+ 个节点,所以我无法为每个新调用重新加载它。目前,该图从我的数据库加载到 RAM 中并在 Hashmap 中引用。
当我启动 servlet(创建一个新实例)时,我需要通过 id 在图中找到 startnode。因此我使用哈希图。
这一切都很好。
我的问题是,在我的路由任务中,我需要更改图表中的某些属性,即行进距离。对于每个创建的实例,这些属性当然需要是单独的。目前,我通过在创建新实例时重置所有“非静态”属性来处理该任务。这就产生了两个问题。
A)实例不是线程安全的
B) 重置非常耗时。高达实际路由的 10 倍以上。
所以我需要的是我的 Servlet 的所有实例的静态 Hashmap。这个 Hashmap 需要包含我网络的所有节点。这些节点需要具有静态属性,如 id、坐标、邻居节点等,但也需要非静态属性,如行进距离。
我怎样才能做到这一点?
感谢阅读和分享想法