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に設定して)アプリケーションをテストすることを強くお薦めします。反復順序の保証はないため、影響がある場合はアプリケーションをできるだけ早く修正するようにしてください。