TransferQueue
インタフェースが追加されました。これは、プロデューサはコンシューマが要素を受け取るまで待機できる BlockingQueue インタフェースの改良版です。この新しいインタフェースの 1 実装がこのリリースの LinkedTransferQueue
にも含まれています。
Java SE 7u6 では、次のマップおよびマップ派生コレクションの実装において、改善された代替のハッシュ関数を導入します。
代替のハッシュ関数により、大量のキーハッシュ衝突が発生するときに、これらのマップ実装のパフォーマンスが向上します。
Java SE 7u6 では、この代替ハッシュ関数は次のように実装されます。
代替ハッシュ関数は、String
型のキーのみに適用されます。
代替ハッシュ関数は、指定されたしきい値サイズよりも容量が大きいマップのみに適用されます。デフォルトのしきい値は -1
です。この値は、代替ハッシュ関数を無効にします。代替ハッシュ関数 (これは String
型のキーのみに適用) を有効にするには、jdk.map.althashing.threshold
システムプロパティーを異なる値に設定します。推奨値は 512
です。このシステムプロパティーを 512
に設定すると、512 エントリよりも容量が大きいすべてのマップが代替ハッシュ関数を使用するようになります。このシステムプロパティーを 0
に設定することができ、この場合はすべてのマップが代替ハッシュ関数を使用するようになります。
jdk.map.althashing.threshold
システムプロパティーの詳細を次に示します。
-1
String
型のキーに対してマップが代替ハッシュ関数を使用するしきい値の容量。値 -1
は、2147483647
と同義で覚えやすい。その他すべての値は、しきい値容量に対応する。たとえば、次のコマンドは Java アプリケーション MyApplication
を実行し、jdk.map.althashing.threshold
システムプロパティーを 512
に設定します。
java -Djdk.map.althashing.threshold=512 MyApplication
代替ハッシュ関数が使用されている場合、キー、値、およびエンティティーの反復順序は、HashMap
、Hashtable
、HashSet
、および ConcurrentHashMap
のインスタンスごとに変化します。反復順序が変化するため、一部のプログラムでは互換性の問題が発生する可能性があります。そのため、代替ハッシュ関数はデフォルトで無効になっています。ハッシュの向上は将来のリリースで調査される予定です。それまでの間、システムプロパティー jdk.map.althashing.threshold
は試験的なものです。アプリケーションが反復順序の影響を受けるかどうかを判定するために、代替ハッシュ関数を有効にして (jdk.map.althashing.threshold
を 0 に設定して) アプリケーションをテストすることを強くお勧めします。反復順序の保証はないため、影響がある場合はアプリケーションをできるだけ早く修正するようにしてください。