ルーティングの目的で Java サーブレットで処理される大きなグラフがあります。グラフには 10 万以上のノードがあるため、新しい呼び出しごとに再読み込みすることはできません。現時点では、グラフはデータベースから RAM に一度ロードされ、ハッシュマップで参照されます。
サーブレットを開始する (新しいインスタンスを作成する) とき、ID でグラフ内の startnode を見つける必要があります。したがって、ハッシュマップを使用します。
それはすべて非常にうまく機能します。
私の問題は、ルーティングタスク内で、グラフ内の特定の属性、つまり移動距離を変更する必要があることです。もちろん、これらの属性は、作成されたインスタンスごとに個別である必要があります。現時点では、新しいインスタンスを作成するときにすべての「非静的」属性をリセットすることで、そのタスクを処理しています。これにより、2 つの問題が生じます。
A) インスタンスはスレッドセーフではありません
B) リセットには非常に時間がかかります。実際のルーティングの最大 10 倍。
したがって、必要なのは、サーブレットのすべてのインスタンスの静的ハッシュマップです。このハッシュマップには、ネットワークのすべてのノードを含める必要があります。これらのノードには、id、座標、隣接ノードなどの静的属性だけでなく、移動距離などの非静的属性も必要です。
どうやってやるの?
読んでアイデアを共有してくれてありがとう