nekohtml 1.9.7

nekohtmlも更新されないけど、自分が使っている範囲では大きな問題にあってないからいいやっと思って、今までやってきたけど、SSOProxyを作っていると、いろいろ問題に遭遇するのでnekohtmlをいじらなきゃだめかなっと思って、検索したら、去年の終頃から更新し始まっているのね。バージョンが1.9.7とかになっている。知らなかった・・・。あとで、試そう。

Collections.synchronized~

Collections.synchronizedMap(Map)すると何が起きるのか気になったのでコードを見てみると、インナークラスのSynchronizedMapでラップしている。そのクラスでは、メンバーに受け取ったMapとObject(mutexっていう名前で)を持っている。mutexにはnewするときに自分自身(SynchronizedMapのthis)を渡して、各メソッドの中でsynchronized(mutex)してロック対象にしている。そんで、keySet()とか呼ばれたときには、Synchronized~でラップして、オブジェクトを返す。なるほど、そういうことになっているのね。というわけで、

Map cache = Collections.synchronizedMap(new HashMap());
Collection values = Collections.synchronizedCollection(cache.values());

というようなコードは無駄ですね。