ConcurrentHashMap のドキュメントから:
取得の完全な同時実行性と更新の調整可能な予想同時実行性をサポートするハッシュ テーブル。
ConcurrentHashMap
それがスレッドセーフな操作を行うと完全に信じることができますか?
キーと値のマッピングに ConcurrentHashMap を使用しています。キーと値のペアは次のとおりです。
Map<Integer,ArrayList<Double>> map1 = new ConcurrentHashMap();
キーのサイズの範囲は [0,1000000] です。一度にキーに対応する値にアクセス/変更できる20個のスレッドがあります。これはそれほど頻繁ではありませんが、その状態が発生する可能性があります。次のメソッドから無限大を取得しています:
Double sum =0.0;
sum = sum + Math.exp(getScore(contextFeatureVector,entry.getValue())+constant);
contextFeatureVector
キーに entry.getValue()
関連付けられた配列リストです。
[編集]
constant =0.0001
private double getScore(List<Double> featureVector,List<Double>weightVector) throws NullPointerException
{
double score =0.0;
int length = featureVector.size();
for (int i =0 ; i< length ; i++){
score = score + (featureVector.get(i)*weightVector.get(i));
}
return score;
}
両方featureVector<> and
weightVector
looks like
[-0.005554038592516575, 0.0048966974158881175, -0.05315976588195846, -0.030837804373964654, 0.014483064988148562, -0.018962129117649, -0.015221386014208877, 0.015825702365331477, -0.11363620479662287, 0.00802609847263844, -0.062106636476812194, 0.008108854471293185, -0.03193255218671684, 0.04949650992670292, -0.0545583154094599, -0.04873314092706468, 0.013534731656877033, 0.08433117163682455, 0.050310355477044114, -0.002420513353516017, -0.02708299928442614, -0.023489187394176294, -0.1277699782685597, -0.10071004855129333, 0.08649040730064464, -0.04940329664431305, -0.027481729446035053, -0.0571846057609884, -0.036738550618481455, -0.035608113682344365]
したがって、getScore から返される値が極端に大きくなりすぎることはありません。数千単位になります。