Kelas ThreadLocalRandom

Java.util.concurrent.ThreadLocalRandom adalah kelas utilitas yang diperkenalkan dari jdk 1.7 dan seterusnya dan berguna saat beberapa utas atau ForkJoinTasks diperlukan untuk menghasilkan angka acak. Ini meningkatkan kinerja dan memiliki lebih sedikit pertentangan daripada metode Math.random ().

Metode ThreadLocalRandom

Berikut adalah daftar metode penting yang tersedia di kelas ThreadLocalRandom.

Sr.No. Metode & Deskripsi
1

public static ThreadLocalRandom current()

Mengembalikan ThreadLocalRandom utas saat ini.

2

protected int next(int bits)

Menghasilkan nomor pseudorandom berikutnya.

3

public double nextDouble(double n)

Mengembalikan pseudorandom, nilai ganda yang didistribusikan secara seragam antara 0 (inklusif) dan nilai yang ditentukan (eksklusif).

4

public double nextDouble(double least, double bound)

Mengembalikan pseudorandom, nilai terdistribusi seragam antara nilai terkecil yang diberikan (inklusif) dan terikat (eksklusif).

5

public int nextInt(int least, int bound)

Mengembalikan pseudorandom, nilai terdistribusi seragam antara nilai terkecil yang diberikan (inklusif) dan terikat (eksklusif).

6

public long nextLong(long n)

Mengembalikan pseudorandom, nilai terdistribusi seragam antara 0 (inklusif) dan nilai yang ditentukan (eksklusif).

7

public long nextLong(long least, long bound)

Mengembalikan pseudorandom, nilai terdistribusi seragam antara nilai terkecil yang diberikan (inklusif) dan terikat (eksklusif).

8

public void setSeed(long seed)

Melempar UnsupportedOperationException.

Contoh

Program TestThread berikut mendemonstrasikan beberapa metode antarmuka Lock ini. Di sini kami telah menggunakan lock () untuk mendapatkan kunci dan buka kunci () untuk membuka kunci.

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());  
   }
}

Ini akan menghasilkan hasil sebagai berikut.

Keluaran

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)

Di sini kami telah menggunakan kelas ThreadLocalRandom dan Random untuk mendapatkan nomor acak.