public class org.apache.commons.lang3.concurrent.Memoizer<I, O> implements org.apache.commons.lang3.concurrent.Computable<I, O>
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.apache.commons.lang3.concurrent.Memoizer
super_class: java.lang.Object
{
private final java.util.concurrent.ConcurrentMap<I, java.util.concurrent.Future<O>> cache;
descriptor: Ljava/util/concurrent/ConcurrentMap;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/concurrent/ConcurrentMap<TI;Ljava/util/concurrent/Future<TO;>;>;
private final org.apache.commons.lang3.concurrent.Computable<I, O> computable;
descriptor: Lorg/apache/commons/lang3/concurrent/Computable;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Lorg/apache/commons/lang3/concurrent/Computable<TI;TO;>;
private final boolean recalculate;
descriptor: Z
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
public void <init>(org.apache.commons.lang3.concurrent.Computable<I, O>);
descriptor: (Lorg/apache/commons/lang3/concurrent/Computable;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
iconst_0
invokespecial org.apache.commons.lang3.concurrent.Memoizer.<init>:(Lorg/apache/commons/lang3/concurrent/Computable;Z)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/apache/commons/lang3/concurrent/Memoizer<TI;TO;>;
0 2 1 computable Lorg/apache/commons/lang3/concurrent/Computable<TI;TO;>;
Signature: (Lorg/apache/commons/lang3/concurrent/Computable<TI;TO;>;)V
MethodParameters:
Name Flags
computable final
public void <init>(org.apache.commons.lang3.concurrent.Computable<I, O>, );
descriptor: (Lorg/apache/commons/lang3/concurrent/Computable;Z)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.util.concurrent.ConcurrentHashMap
dup
invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
putfield org.apache.commons.lang3.concurrent.Memoizer.cache:Ljava/util/concurrent/ConcurrentMap;
2: aload 0
aload 1
putfield org.apache.commons.lang3.concurrent.Memoizer.computable:Lorg/apache/commons/lang3/concurrent/Computable;
3: aload 0
iload 2
putfield org.apache.commons.lang3.concurrent.Memoizer.recalculate:Z
4: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/apache/commons/lang3/concurrent/Memoizer<TI;TO;>;
0 5 1 computable Lorg/apache/commons/lang3/concurrent/Computable<TI;TO;>;
0 5 2 recalculate Z
Signature: (Lorg/apache/commons/lang3/concurrent/Computable<TI;TO;>;Z)V
MethodParameters:
Name Flags
computable final
recalculate final
public O compute();
descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=5, args_size=2
start local 0 start local 1 0: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.commons.lang3.concurrent.Memoizer.cache:Ljava/util/concurrent/ConcurrentMap;
aload 1
invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.concurrent.Future
astore 2
start local 2 1: aload 2
ifnonnull 8
2: new org.apache.commons.lang3.concurrent.Memoizer$1
dup
aload 0
aload 1
invokespecial org.apache.commons.lang3.concurrent.Memoizer$1.<init>:(Lorg/apache/commons/lang3/concurrent/Memoizer;Ljava/lang/Object;)V
astore 3
start local 3 3: new java.util.concurrent.FutureTask
dup
aload 3
invokespecial java.util.concurrent.FutureTask.<init>:(Ljava/util/concurrent/Callable;)V
astore 4
start local 4 4: aload 0
getfield org.apache.commons.lang3.concurrent.Memoizer.cache:Ljava/util/concurrent/ConcurrentMap;
aload 1
aload 4
invokeinterface java.util.concurrent.ConcurrentMap.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.concurrent.Future
astore 2
5: aload 2
ifnonnull 8
6: aload 4
astore 2
7: aload 4
invokevirtual java.util.concurrent.FutureTask.run:()V
end local 4 end local 3 8: StackMap locals: java.util.concurrent.Future
StackMap stack:
aload 2
invokeinterface java.util.concurrent.Future.get:()Ljava/lang/Object;
9: areturn
10: StackMap locals:
StackMap stack: java.util.concurrent.CancellationException
pop
11: aload 0
getfield org.apache.commons.lang3.concurrent.Memoizer.cache:Ljava/util/concurrent/ConcurrentMap;
aload 1
aload 2
invokeinterface java.util.concurrent.ConcurrentMap.remove:(Ljava/lang/Object;Ljava/lang/Object;)Z
pop
goto 0
12: StackMap locals:
StackMap stack: java.util.concurrent.ExecutionException
astore 3
start local 3 13: aload 0
getfield org.apache.commons.lang3.concurrent.Memoizer.recalculate:Z
ifeq 15
14: aload 0
getfield org.apache.commons.lang3.concurrent.Memoizer.cache:Ljava/util/concurrent/ConcurrentMap;
aload 1
aload 2
invokeinterface java.util.concurrent.ConcurrentMap.remove:(Ljava/lang/Object;Ljava/lang/Object;)Z
pop
15: StackMap locals: java.util.concurrent.ExecutionException
StackMap stack:
aload 0
aload 3
invokevirtual java.util.concurrent.ExecutionException.getCause:()Ljava/lang/Throwable;
invokevirtual org.apache.commons.lang3.concurrent.Memoizer.launderException:(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
athrow
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lorg/apache/commons/lang3/concurrent/Memoizer<TI;TO;>;
0 16 1 arg TI;
1 16 2 future Ljava/util/concurrent/Future<TO;>;
3 8 3 eval Ljava/util/concurrent/Callable<TO;>;
4 8 4 futureTask Ljava/util/concurrent/FutureTask<TO;>;
13 16 3 e Ljava/util/concurrent/ExecutionException;
Exception table:
from to target type
8 9 10 Class java.util.concurrent.CancellationException
8 9 12 Class java.util.concurrent.ExecutionException
Exceptions:
throws java.lang.InterruptedException
Signature: (TI;)TO;
MethodParameters:
Name Flags
arg final
private java.lang.RuntimeException launderException(java.lang.Throwable);
descriptor: (Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 1
instanceof java.lang.RuntimeException
ifeq 2
1: aload 1
checkcast java.lang.RuntimeException
areturn
2: StackMap locals:
StackMap stack:
aload 1
instanceof java.lang.Error
ifeq 4
3: aload 1
checkcast java.lang.Error
athrow
4: StackMap locals:
StackMap stack:
new java.lang.IllegalStateException
dup
ldc "Unchecked exception"
aload 1
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/apache/commons/lang3/concurrent/Memoizer<TI;TO;>;
0 5 1 throwable Ljava/lang/Throwable;
MethodParameters:
Name Flags
throwable final
}
Signature: <I:Ljava/lang/Object;O:Ljava/lang/Object;>Ljava/lang/Object;Lorg/apache/commons/lang3/concurrent/Computable<TI;TO;>;
SourceFile: "Memoizer.java"
NestMembers:
org.apache.commons.lang3.concurrent.Memoizer$1
InnerClasses:
org.apache.commons.lang3.concurrent.Memoizer$1