ThreadLocalRandom Sınıfı
Bir java.util.concurrent.ThreadLocalRandom, jdk 1.7'den itibaren tanıtılan bir yardımcı program sınıfıdır ve rastgele sayılar oluşturmak için birden çok iş parçacığı veya ForkJoinTasks gerekli olduğunda yararlıdır. Performansı artırır ve Math.random () yönteminden daha az çekişmeye sahiptir.
ThreadLocalRandom Yöntemleri
Aşağıda, ThreadLocalRandom sınıfında bulunan önemli yöntemlerin listesi bulunmaktadır.
Sr.No. | Yöntem ve Açıklama |
---|---|
1 | public static ThreadLocalRandom current() Geçerli iş parçacığının ThreadLocalRandom'unu döndürür. |
2 | protected int next(int bits) Bir sonraki sözde rasgele sayıyı üretir. |
3 | public double nextDouble(double n) 0 (dahil) ile belirtilen değer (hariç) arasında tekdüze dağıtılmış bir sözde rastgele, çift değer döndürür. |
4 | public double nextDouble(double least, double bound) Verilen en düşük değer (dahil) ve sınır (dışlayıcı) arasında tekdüze dağıtılmış bir sözde rasgele değer döndürür. |
5 | public int nextInt(int least, int bound) Verilen en düşük değer (dahil) ve sınır (dışlayıcı) arasında tekdüze dağıtılmış bir sözde rasgele değer döndürür. |
6 | public long nextLong(long n) 0 (dahil) ile belirtilen değer (hariç) arasında bir sözde rastgele dağıtılmış değer döndürür. |
7 | public long nextLong(long least, long bound) Verilen en düşük değer (dahil) ve sınır (dışlayıcı) arasında tekdüze dağıtılmış bir sözde rasgele değer döndürür. |
8 | public void setSeed(long seed) UnsupportedOperationException atar. |
Misal
Aşağıdaki TestThread programı, Kilit arayüzünün bu yöntemlerinden bazılarını göstermektedir. Burada kilidi elde etmek için lock () ve kilidi açmak için unlock () kullandık.
import java.util.Random;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import java.util.concurrent.ThreadLocalRandom;
public class TestThread {
public static void main(final String[] arguments) {
System.out.println("Random Integer: " + new Random().nextInt());
System.out.println("Seeded Random Integer: " + new Random(15).nextInt());
System.out.println(
"Thread Local Random Integer: " + ThreadLocalRandom.current().nextInt());
final ThreadLocalRandom random = ThreadLocalRandom.current();
random.setSeed(15); //exception will come as seeding is not allowed in ThreadLocalRandom.
System.out.println("Seeded Thread Local Random Integer: " + random.nextInt());
}
}
Bu, aşağıdaki sonucu verecektir.
Çıktı
Random Integer: 1566889198
Seeded Random Integer: -1159716814
Thread Local Random Integer: 358693993
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.concurrent.ThreadLocalRandom.setSeed(Unknown Source)
at TestThread.main(TestThread.java:21)
Burada, rastgele sayılar elde etmek için ThreadLocalRandom ve Random sınıflarını kullandık.