public final class com.google.common.util.concurrent.ExecutionSequencer
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: com.google.common.util.concurrent.ExecutionSequencer
super_class: java.lang.Object
{
private final java.util.concurrent.atomic.AtomicReference<com.google.common.util.concurrent.ListenableFuture<java.lang.Void>> ref;
descriptor: Ljava/util/concurrent/atomic/AtomicReference;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/concurrent/atomic/AtomicReference<Lcom/google/common/util/concurrent/ListenableFuture<Ljava/lang/Void;>;>;
private com.google.common.util.concurrent.ExecutionSequencer$ThreadConfinedTaskQueue latestTaskQueue;
descriptor: Lcom/google/common/util/concurrent/ExecutionSequencer$ThreadConfinedTaskQueue;
flags: (0x0002) ACC_PRIVATE
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
2: new java.util.concurrent.atomic.AtomicReference
dup
invokestatic com.google.common.util.concurrent.Futures.immediateVoidFuture:()Lcom/google/common/util/concurrent/ListenableFuture;
invokespecial java.util.concurrent.atomic.AtomicReference.<init>:(Ljava/lang/Object;)V
putfield com.google.common.util.concurrent.ExecutionSequencer.ref:Ljava/util/concurrent/atomic/AtomicReference;
3: aload 0
new com.google.common.util.concurrent.ExecutionSequencer$ThreadConfinedTaskQueue
dup
invokespecial com.google.common.util.concurrent.ExecutionSequencer$ThreadConfinedTaskQueue.<init>:()V
putfield com.google.common.util.concurrent.ExecutionSequencer.latestTaskQueue:Lcom/google/common/util/concurrent/ExecutionSequencer$ThreadConfinedTaskQueue;
4: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/google/common/util/concurrent/ExecutionSequencer;
public static com.google.common.util.concurrent.ExecutionSequencer create();
descriptor: ()Lcom/google/common/util/concurrent/ExecutionSequencer;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: new com.google.common.util.concurrent.ExecutionSequencer
dup
invokespecial com.google.common.util.concurrent.ExecutionSequencer.<init>:()V
areturn
LocalVariableTable:
Start End Slot Name Signature
public <T> com.google.common.util.concurrent.ListenableFuture<T> submit(java.util.concurrent.Callable<T>, java.util.concurrent.Executor);
descriptor: (Ljava/util/concurrent/Callable;Ljava/util/concurrent/Executor;)Lcom/google/common/util/concurrent/ListenableFuture;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
pop
1: aload 2
invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
pop
2: aload 0
3: new com.google.common.util.concurrent.ExecutionSequencer$1
dup
aload 0
aload 1
invokespecial com.google.common.util.concurrent.ExecutionSequencer$1.<init>:(Lcom/google/common/util/concurrent/ExecutionSequencer;Ljava/util/concurrent/Callable;)V
4: aload 2
5: invokevirtual com.google.common.util.concurrent.ExecutionSequencer.submitAsync:(Lcom/google/common/util/concurrent/AsyncCallable;Ljava/util/concurrent/Executor;)Lcom/google/common/util/concurrent/ListenableFuture;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/google/common/util/concurrent/ExecutionSequencer;
0 6 1 callable Ljava/util/concurrent/Callable<TT;>;
0 6 2 executor Ljava/util/concurrent/Executor;
Signature: <T:Ljava/lang/Object;>(Ljava/util/concurrent/Callable<TT;>;Ljava/util/concurrent/Executor;)Lcom/google/common/util/concurrent/ListenableFuture<TT;>;
MethodParameters:
Name Flags
callable final
executor
public <T> com.google.common.util.concurrent.ListenableFuture<T> submitAsync(com.google.common.util.concurrent.AsyncCallable<T>, java.util.concurrent.Executor);
descriptor: (Lcom/google/common/util/concurrent/AsyncCallable;Ljava/util/concurrent/Executor;)Lcom/google/common/util/concurrent/ListenableFuture;
flags: (0x0001) ACC_PUBLIC
Code:
stack=8, locals=10, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
pop
1: aload 2
invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
pop
2: new com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor
dup
aload 2
aload 0
invokespecial com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor.<init>:(Ljava/util/concurrent/Executor;Lcom/google/common/util/concurrent/ExecutionSequencer;)V
astore 3
start local 3 3: new com.google.common.util.concurrent.ExecutionSequencer$2
dup
aload 0
aload 3
aload 1
invokespecial com.google.common.util.concurrent.ExecutionSequencer$2.<init>:(Lcom/google/common/util/concurrent/ExecutionSequencer;Lcom/google/common/util/concurrent/ExecutionSequencer$TaskNonReentrantExecutor;Lcom/google/common/util/concurrent/AsyncCallable;)V
4: astore 4
start local 4 5: invokestatic com.google.common.util.concurrent.SettableFuture.create:()Lcom/google/common/util/concurrent/SettableFuture;
astore 5
start local 5 6: aload 0
getfield com.google.common.util.concurrent.ExecutionSequencer.ref:Ljava/util/concurrent/atomic/AtomicReference;
aload 5
invokevirtual java.util.concurrent.atomic.AtomicReference.getAndSet:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast com.google.common.util.concurrent.ListenableFuture
astore 6
start local 6 7: aload 4
invokestatic com.google.common.util.concurrent.TrustedListenableFutureTask.create:(Lcom/google/common/util/concurrent/AsyncCallable;)Lcom/google/common/util/concurrent/TrustedListenableFutureTask;
astore 7
start local 7 8: aload 6
aload 7
aload 3
invokeinterface com.google.common.util.concurrent.ListenableFuture.addListener:(Ljava/lang/Runnable;Ljava/util/concurrent/Executor;)V
9: aload 7
invokestatic com.google.common.util.concurrent.Futures.nonCancellationPropagating:(Lcom/google/common/util/concurrent/ListenableFuture;)Lcom/google/common/util/concurrent/ListenableFuture;
astore 8
start local 8 10: new com.google.common.util.concurrent.ExecutionSequencer$3
dup
aload 0
aload 7
aload 5
aload 6
aload 8
aload 3
invokespecial com.google.common.util.concurrent.ExecutionSequencer$3.<init>:(Lcom/google/common/util/concurrent/ExecutionSequencer;Lcom/google/common/util/concurrent/TrustedListenableFutureTask;Lcom/google/common/util/concurrent/SettableFuture;Lcom/google/common/util/concurrent/ListenableFuture;Lcom/google/common/util/concurrent/ListenableFuture;Lcom/google/common/util/concurrent/ExecutionSequencer$TaskNonReentrantExecutor;)V
11: astore 9
start local 9 12: aload 8
aload 9
invokestatic com.google.common.util.concurrent.MoreExecutors.directExecutor:()Ljava/util/concurrent/Executor;
invokeinterface com.google.common.util.concurrent.ListenableFuture.addListener:(Ljava/lang/Runnable;Ljava/util/concurrent/Executor;)V
13: aload 7
aload 9
invokestatic com.google.common.util.concurrent.MoreExecutors.directExecutor:()Ljava/util/concurrent/Executor;
invokevirtual com.google.common.util.concurrent.TrustedListenableFutureTask.addListener:(Ljava/lang/Runnable;Ljava/util/concurrent/Executor;)V
14: aload 8
areturn
end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lcom/google/common/util/concurrent/ExecutionSequencer;
0 15 1 callable Lcom/google/common/util/concurrent/AsyncCallable<TT;>;
0 15 2 executor Ljava/util/concurrent/Executor;
3 15 3 taskExecutor Lcom/google/common/util/concurrent/ExecutionSequencer$TaskNonReentrantExecutor;
5 15 4 task Lcom/google/common/util/concurrent/AsyncCallable<TT;>;
6 15 5 newFuture Lcom/google/common/util/concurrent/SettableFuture<Ljava/lang/Void;>;
7 15 6 oldFuture Lcom/google/common/util/concurrent/ListenableFuture<Ljava/lang/Void;>;
8 15 7 taskFuture Lcom/google/common/util/concurrent/TrustedListenableFutureTask<TT;>;
10 15 8 outputFuture Lcom/google/common/util/concurrent/ListenableFuture<TT;>;
12 15 9 listener Ljava/lang/Runnable;
Signature: <T:Ljava/lang/Object;>(Lcom/google/common/util/concurrent/AsyncCallable<TT;>;Ljava/util/concurrent/Executor;)Lcom/google/common/util/concurrent/ListenableFuture<TT;>;
MethodParameters:
Name Flags
callable final
executor final
}
SourceFile: "ExecutionSequencer.java"
NestMembers:
com.google.common.util.concurrent.ExecutionSequencer$1 com.google.common.util.concurrent.ExecutionSequencer$2 com.google.common.util.concurrent.ExecutionSequencer$3 com.google.common.util.concurrent.ExecutionSequencer$RunningState com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor com.google.common.util.concurrent.ExecutionSequencer$ThreadConfinedTaskQueue
InnerClasses:
com.google.common.util.concurrent.ExecutionSequencer$1
com.google.common.util.concurrent.ExecutionSequencer$2
com.google.common.util.concurrent.ExecutionSequencer$3
final RunningState = com.google.common.util.concurrent.ExecutionSequencer$RunningState of com.google.common.util.concurrent.ExecutionSequencer
private final TaskNonReentrantExecutor = com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor of com.google.common.util.concurrent.ExecutionSequencer
private final ThreadConfinedTaskQueue = com.google.common.util.concurrent.ExecutionSequencer$ThreadConfinedTaskQueue of com.google.common.util.concurrent.ExecutionSequencer
RuntimeInvisibleAnnotations:
com.google.common.annotations.Beta()