Java 7 の新機能を調べていたところ、この新しいクラスが追加されていることがわかりました。
同時アクセスの場合、Math.random() の代わりに ThreadLocalRandom を使用すると、競合が少なくなり、最終的にパフォーマンスが向上します。
これがどのように実装され、競合が少なくなり、パフォーマンスが向上するかを調査していました。
Java 7 の新機能を調べていたところ、この新しいクラスが追加されていることがわかりました。
同時アクセスの場合、Math.random() の代わりに ThreadLocalRandom を使用すると、競合が少なくなり、最終的にパフォーマンスが向上します。
これがどのように実装され、競合が少なくなり、パフォーマンスが向上するかを調査していました。
事実上、この 2 つの違いは同期です。Math#random()複数のスレッドによって同時に呼び出される可能性があるため、同期する必要がありますThreadLocalRandomが、非同期バージョンRandomはスレッドにバインドされているため、各スレッドが独自の (より高速な) 割り当てを取得します。
実装を詳しく見てみると、 がMath#random()の単一インスタンスを使用してjava.util.Random乱数を生成し、ThreadLocalRandomスレッドごとにインスタンスを割り当てて、その意味での競合を排除していることがわかります。
ThreadLocalRandom同期を実現する同時実行性Math#random()を実現します。