public final class io.netty.util.internal.ThreadLocalRandom extends java.util.Random
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: io.netty.util.internal.ThreadLocalRandom
super_class: java.util.Random
{
private static final io.netty.util.internal.logging.InternalLogger logger;
descriptor: Lio/netty/util/internal/logging/InternalLogger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.util.concurrent.atomic.AtomicLong seedUniquifier;
descriptor: Ljava/util/concurrent/atomic/AtomicLong;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static volatile long initialSeedUniquifier;
descriptor: J
flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE
private static final java.lang.Thread seedGeneratorThread;
descriptor: Ljava/lang/Thread;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.util.concurrent.BlockingQueue<java.lang.Long> seedQueue;
descriptor: Ljava/util/concurrent/BlockingQueue;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/concurrent/BlockingQueue<Ljava/lang/Long;>;
private static final long seedGeneratorStartTime;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static volatile long seedGeneratorEndTime;
descriptor: J
flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE
private static final long multiplier;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 25214903917
private static final long addend;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 11
private static final long mask;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 281474976710655
private long rnd;
descriptor: J
flags: (0x0002) ACC_PRIVATE
boolean initialized;
descriptor: Z
flags: (0x0000)
private long pad0;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private long pad1;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private long pad2;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private long pad3;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private long pad4;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private long pad5;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private long pad6;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private long pad7;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private static final long serialVersionUID;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: -5851777807851030925
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=1, args_size=0
0: ldc Lio/netty/util/internal/ThreadLocalRandom;
invokestatic io.netty.util.internal.logging.InternalLoggerFactory.getInstance:(Ljava/lang/Class;)Lio/netty/util/internal/logging/InternalLogger;
putstatic io.netty.util.internal.ThreadLocalRandom.logger:Lio/netty/util/internal/logging/InternalLogger;
1: new java.util.concurrent.atomic.AtomicLong
dup
invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
putstatic io.netty.util.internal.ThreadLocalRandom.seedUniquifier:Ljava/util/concurrent/atomic/AtomicLong;
2: ldc "io.netty.initialSeedUniquifier"
lconst_0
invokestatic io.netty.util.internal.SystemPropertyUtil.getLong:(Ljava/lang/String;J)J
putstatic io.netty.util.internal.ThreadLocalRandom.initialSeedUniquifier:J
3: getstatic io.netty.util.internal.ThreadLocalRandom.initialSeedUniquifier:J
lconst_0
lcmp
ifne 18
4: ldc "java.util.secureRandomSeed"
iconst_0
invokestatic io.netty.util.internal.SystemPropertyUtil.getBoolean:(Ljava/lang/String;Z)Z
istore 0
start local 0 5: iload 0
ifeq 13
6: new java.util.concurrent.LinkedBlockingQueue
dup
invokespecial java.util.concurrent.LinkedBlockingQueue.<init>:()V
putstatic io.netty.util.internal.ThreadLocalRandom.seedQueue:Ljava/util/concurrent/BlockingQueue;
7: invokestatic java.lang.System.nanoTime:()J
putstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorStartTime:J
8: new io.netty.util.internal.ThreadLocalRandom$1
dup
ldc "initialSeedUniquifierGenerator"
invokespecial io.netty.util.internal.ThreadLocalRandom$1.<init>:(Ljava/lang/String;)V
putstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorThread:Ljava/lang/Thread;
9: getstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorThread:Ljava/lang/Thread;
iconst_1
invokevirtual java.lang.Thread.setDaemon:(Z)V
10: getstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorThread:Ljava/lang/Thread;
new io.netty.util.internal.ThreadLocalRandom$2
dup
invokespecial io.netty.util.internal.ThreadLocalRandom$2.<init>:()V
invokevirtual java.lang.Thread.setUncaughtExceptionHandler:(Ljava/lang/Thread$UncaughtExceptionHandler;)V
11: getstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorThread:Ljava/lang/Thread;
invokevirtual java.lang.Thread.start:()V
12: goto 21
13: StackMap locals: int
StackMap stack:
invokestatic java.lang.System.currentTimeMillis:()J
invokestatic io.netty.util.internal.ThreadLocalRandom.mix64:(J)J
invokestatic java.lang.System.nanoTime:()J
invokestatic io.netty.util.internal.ThreadLocalRandom.mix64:(J)J
lxor
putstatic io.netty.util.internal.ThreadLocalRandom.initialSeedUniquifier:J
14: aconst_null
putstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorThread:Ljava/lang/Thread;
15: aconst_null
putstatic io.netty.util.internal.ThreadLocalRandom.seedQueue:Ljava/util/concurrent/BlockingQueue;
16: lconst_0
putstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorStartTime:J
end local 0 17: goto 21
18: StackMap locals:
StackMap stack:
aconst_null
putstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorThread:Ljava/lang/Thread;
19: aconst_null
putstatic io.netty.util.internal.ThreadLocalRandom.seedQueue:Ljava/util/concurrent/BlockingQueue;
20: lconst_0
putstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorStartTime:J
21: StackMap locals:
StackMap stack:
return
LocalVariableTable:
Start End Slot Name Signature
5 17 0 secureRandom Z
public static void setInitialSeedUniquifier(long);
descriptor: (J)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: lload 0
putstatic io.netty.util.internal.ThreadLocalRandom.initialSeedUniquifier:J
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 initialSeedUniquifier J
MethodParameters:
Name Flags
initialSeedUniquifier
public static long getInitialSeedUniquifier();
descriptor: ()J
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=5, locals=9, args_size=0
0: getstatic io.netty.util.internal.ThreadLocalRandom.initialSeedUniquifier:J
lstore 0
start local 0 1: lload 0
lconst_0
lcmp
ifeq 3
2: lload 0
lreturn
3: StackMap locals: long
StackMap stack:
ldc Lio/netty/util/internal/ThreadLocalRandom;
dup
astore 2
monitorenter
4: getstatic io.netty.util.internal.ThreadLocalRandom.initialSeedUniquifier:J
lstore 0
5: lload 0
lconst_0
lcmp
ifeq 8
6: lload 0
aload 2
monitorexit
7: lreturn
8: StackMap locals: java.lang.Class
StackMap stack:
getstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorStartTime:J
getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
ldc 3
invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
ladd
lstore 3
start local 3 9: iconst_0
istore 5
start local 5 10: StackMap locals: long int
StackMap stack:
lload 3
invokestatic java.lang.System.nanoTime:()J
lsub
lstore 6
start local 6 11: lload 6
lconst_0
lcmp
ifgt 14
12: getstatic io.netty.util.internal.ThreadLocalRandom.seedQueue:Ljava/util/concurrent/BlockingQueue;
invokeinterface java.util.concurrent.BlockingQueue.poll:()Ljava/lang/Object;
checkcast java.lang.Long
astore 8
start local 8 13: goto 15
end local 8 14: StackMap locals: long
StackMap stack:
getstatic io.netty.util.internal.ThreadLocalRandom.seedQueue:Ljava/util/concurrent/BlockingQueue;
lload 6
getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
invokeinterface java.util.concurrent.BlockingQueue.poll:(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;
checkcast java.lang.Long
astore 8
start local 8 15: StackMap locals: java.lang.Long
StackMap stack:
aload 8
ifnull 22
16: aload 8
invokevirtual java.lang.Long.longValue:()J
lstore 0
17: goto 28
end local 8 18: StackMap locals: long java.lang.Class long int long
StackMap stack: java.lang.InterruptedException
pop
19: iconst_1
istore 5
20: getstatic io.netty.util.internal.ThreadLocalRandom.logger:Lio/netty/util/internal/logging/InternalLogger;
ldc "Failed to generate a seed from SecureRandom due to an InterruptedException."
invokeinterface io.netty.util.internal.logging.InternalLogger.warn:(Ljava/lang/String;)V
21: goto 28
22: StackMap locals:
StackMap stack:
lload 6
lconst_0
lcmp
ifgt 10
23: getstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorThread:Ljava/lang/Thread;
invokevirtual java.lang.Thread.interrupt:()V
24: getstatic io.netty.util.internal.ThreadLocalRandom.logger:Lio/netty/util/internal/logging/InternalLogger;
25: ldc "Failed to generate a seed from SecureRandom within {} seconds. Not enough entropy?"
26: ldc 3
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
27: invokeinterface io.netty.util.internal.logging.InternalLogger.warn:(Ljava/lang/String;Ljava/lang/Object;)V
end local 6 28: StackMap locals:
StackMap stack:
lload 0
29: ldc 3627065505421648153
lxor
lstore 0
30: lload 0
invokestatic java.lang.System.nanoTime:()J
invokestatic java.lang.Long.reverse:(J)J
lxor
lstore 0
31: lload 0
putstatic io.netty.util.internal.ThreadLocalRandom.initialSeedUniquifier:J
32: iload 5
ifeq 35
33: invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.interrupt:()V
34: getstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorThread:Ljava/lang/Thread;
invokevirtual java.lang.Thread.interrupt:()V
35: StackMap locals:
StackMap stack:
getstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorEndTime:J
lconst_0
lcmp
ifne 37
36: invokestatic java.lang.System.nanoTime:()J
putstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorEndTime:J
37: StackMap locals:
StackMap stack:
lload 0
aload 2
monitorexit
38: lreturn
end local 5 end local 3 39: StackMap locals: long java.lang.Class
StackMap stack: java.lang.Throwable
aload 2
monitorexit
40: athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
1 41 0 initialSeedUniquifier J
9 39 3 deadLine J
10 39 5 interrupted Z
11 28 6 waitTime J
13 14 8 seed Ljava/lang/Long;
15 18 8 seed Ljava/lang/Long;
Exception table:
from to target type
11 17 18 Class java.lang.InterruptedException
4 7 39 any
8 38 39 any
39 40 39 any
private static long newSeed();
descriptor: ()J
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=10, locals=6, args_size=0
0: StackMap locals:
StackMap stack:
getstatic io.netty.util.internal.ThreadLocalRandom.seedUniquifier:Ljava/util/concurrent/atomic/AtomicLong;
invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
lstore 0
start local 0 1: lload 0
lconst_0
lcmp
ifeq 2
lload 0
goto 3
StackMap locals: long
StackMap stack:
2: invokestatic io.netty.util.internal.ThreadLocalRandom.getInitialSeedUniquifier:()J
StackMap locals:
StackMap stack: long
3: lstore 2
start local 2 4: lload 2
ldc 181783497276652981
lmul
lstore 4
start local 4 5: getstatic io.netty.util.internal.ThreadLocalRandom.seedUniquifier:Ljava/util/concurrent/atomic/AtomicLong;
lload 0
lload 4
invokevirtual java.util.concurrent.atomic.AtomicLong.compareAndSet:(JJ)Z
ifeq 0
6: lload 0
lconst_0
lcmp
ifne 15
getstatic io.netty.util.internal.ThreadLocalRandom.logger:Lio/netty/util/internal/logging/InternalLogger;
invokeinterface io.netty.util.internal.logging.InternalLogger.isDebugEnabled:()Z
ifeq 15
7: getstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorEndTime:J
lconst_0
lcmp
ifeq 14
8: getstatic io.netty.util.internal.ThreadLocalRandom.logger:Lio/netty/util/internal/logging/InternalLogger;
9: ldc "-Dio.netty.initialSeedUniquifier: 0x%016x (took %d ms)"
iconst_2
anewarray java.lang.Object
dup
iconst_0
10: lload 2
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
aastore
dup
iconst_1
11: getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
getstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorEndTime:J
getstatic io.netty.util.internal.ThreadLocalRandom.seedGeneratorStartTime:J
lsub
invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
aastore
12: invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokeinterface io.netty.util.internal.logging.InternalLogger.debug:(Ljava/lang/String;)V
13: goto 15
14: StackMap locals: long long
StackMap stack:
getstatic io.netty.util.internal.ThreadLocalRandom.logger:Lio/netty/util/internal/logging/InternalLogger;
ldc "-Dio.netty.initialSeedUniquifier: 0x%016x"
iconst_1
anewarray java.lang.Object
dup
iconst_0
lload 2
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
aastore
invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokeinterface io.netty.util.internal.logging.InternalLogger.debug:(Ljava/lang/String;)V
15: StackMap locals:
StackMap stack:
lload 4
invokestatic java.lang.System.nanoTime:()J
lxor
lreturn
end local 4 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
1 16 0 current J
4 16 2 actualCurrent J
5 16 4 next J
private static long mix64(long);
descriptor: (J)J
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=2, args_size=1
start local 0 0: lload 0
lload 0
bipush 33
lushr
lxor
ldc -49064778989728563
lmul
lstore 0
1: lload 0
lload 0
bipush 33
lushr
lxor
ldc -4265267296055464877
lmul
lstore 0
2: lload 0
lload 0
bipush 33
lushr
lxor
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 z J
MethodParameters:
Name Flags
z
void <init>();
descriptor: ()V
flags: (0x0000)
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
invokestatic io.netty.util.internal.ThreadLocalRandom.newSeed:()J
invokespecial java.util.Random.<init>:(J)V
1: aload 0
iconst_1
putfield io.netty.util.internal.ThreadLocalRandom.initialized:Z
2: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/netty/util/internal/ThreadLocalRandom;
public static io.netty.util.internal.ThreadLocalRandom current();
descriptor: ()Lio/netty/util/internal/ThreadLocalRandom;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: invokestatic io.netty.util.internal.InternalThreadLocalMap.get:()Lio/netty/util/internal/InternalThreadLocalMap;
invokevirtual io.netty.util.internal.InternalThreadLocalMap.random:()Lio/netty/util/internal/ThreadLocalRandom;
areturn
LocalVariableTable:
Start End Slot Name Signature
public void setSeed(long);
descriptor: (J)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield io.netty.util.internal.ThreadLocalRandom.initialized:Z
ifeq 2
1: new java.lang.UnsupportedOperationException
dup
invokespecial java.lang.UnsupportedOperationException.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
aload 0
lload 1
ldc 25214903917
lxor
ldc 281474976710655
land
putfield io.netty.util.internal.ThreadLocalRandom.rnd:J
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/netty/util/internal/ThreadLocalRandom;
0 4 1 seed J
MethodParameters:
Name Flags
seed
protected int next(int);
descriptor: (I)I
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 0
getfield io.netty.util.internal.ThreadLocalRandom.rnd:J
ldc 25214903917
lmul
ldc 11
ladd
ldc 281474976710655
land
putfield io.netty.util.internal.ThreadLocalRandom.rnd:J
1: aload 0
getfield io.netty.util.internal.ThreadLocalRandom.rnd:J
bipush 48
iload 1
isub
lushr
l2i
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/netty/util/internal/ThreadLocalRandom;
0 2 1 bits I
MethodParameters:
Name Flags
bits
public int nextInt(int, int);
descriptor: (II)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: iload 1
iload 2
if_icmplt 2
1: new java.lang.IllegalArgumentException
dup
invokespecial java.lang.IllegalArgumentException.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
aload 0
iload 2
iload 1
isub
invokevirtual io.netty.util.internal.ThreadLocalRandom.nextInt:(I)I
iload 1
iadd
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/netty/util/internal/ThreadLocalRandom;
0 3 1 least I
0 3 2 bound I
MethodParameters:
Name Flags
least
bound
public long nextLong(long);
descriptor: (J)J
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=10, args_size=2
start local 0 start local 1 0: lload 1
lconst_0
lcmp
ifgt 2
1: new java.lang.IllegalArgumentException
dup
ldc "n must be positive"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
lconst_0
lstore 3
start local 3 3: goto 12
4: StackMap locals: long
StackMap stack:
aload 0
iconst_2
invokevirtual io.netty.util.internal.ThreadLocalRandom.next:(I)I
istore 5
start local 5 5: lload 1
iconst_1
lushr
lstore 6
start local 6 6: iload 5
iconst_2
iand
ifne 7
lload 6
goto 8
StackMap locals: int long
StackMap stack:
7: lload 1
lload 6
lsub
StackMap locals:
StackMap stack: long
8: lstore 8
start local 8 9: iload 5
iconst_1
iand
ifne 11
10: lload 3
lload 1
lload 8
lsub
ladd
lstore 3
11: StackMap locals: long
StackMap stack:
lload 8
lstore 1
end local 8 end local 6 end local 5 12: StackMap locals:
StackMap stack:
lload 1
ldc 2147483647
lcmp
ifge 4
13: lload 3
aload 0
lload 1
l2i
invokevirtual io.netty.util.internal.ThreadLocalRandom.nextInt:(I)I
i2l
ladd
lreturn
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lio/netty/util/internal/ThreadLocalRandom;
0 14 1 n J
3 14 3 offset J
5 12 5 bits I
6 12 6 half J
9 12 8 nextn J
MethodParameters:
Name Flags
n
public long nextLong(long, long);
descriptor: (JJ)J
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=5, args_size=3
start local 0 start local 1 start local 3 0: lload 1
lload 3
lcmp
iflt 2
1: new java.lang.IllegalArgumentException
dup
invokespecial java.lang.IllegalArgumentException.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
aload 0
lload 3
lload 1
lsub
invokevirtual io.netty.util.internal.ThreadLocalRandom.nextLong:(J)J
lload 1
ladd
lreturn
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/netty/util/internal/ThreadLocalRandom;
0 3 1 least J
0 3 3 bound J
MethodParameters:
Name Flags
least
bound
public double nextDouble(double);
descriptor: (D)D
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: dload 1
dconst_0
dcmpg
ifgt 2
1: new java.lang.IllegalArgumentException
dup
ldc "n must be positive"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
invokevirtual io.netty.util.internal.ThreadLocalRandom.nextDouble:()D
dload 1
dmul
dreturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/netty/util/internal/ThreadLocalRandom;
0 3 1 n D
MethodParameters:
Name Flags
n
public double nextDouble(double, double);
descriptor: (DD)D
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=5, args_size=3
start local 0 start local 1 start local 3 0: dload 1
dload 3
dcmpl
iflt 2
1: new java.lang.IllegalArgumentException
dup
invokespecial java.lang.IllegalArgumentException.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
aload 0
invokevirtual io.netty.util.internal.ThreadLocalRandom.nextDouble:()D
dload 3
dload 1
dsub
dmul
dload 1
dadd
dreturn
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/netty/util/internal/ThreadLocalRandom;
0 3 1 least D
0 3 3 bound D
MethodParameters:
Name Flags
least
bound
}
SourceFile: "ThreadLocalRandom.java"
NestMembers:
io.netty.util.internal.ThreadLocalRandom$1 io.netty.util.internal.ThreadLocalRandom$2
InnerClasses:
io.netty.util.internal.ThreadLocalRandom$1
io.netty.util.internal.ThreadLocalRandom$2
public abstract UncaughtExceptionHandler = java.lang.Thread$UncaughtExceptionHandler of java.lang.Thread