final class reactor.core.scheduler.BoundedElasticScheduler implements reactor.core.scheduler.Scheduler, reactor.core.Scannable
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: reactor.core.scheduler.BoundedElasticScheduler
super_class: java.lang.Object
{
static final int DEFAULT_TTL_SECONDS;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 60
static final java.util.concurrent.atomic.AtomicLong EVICTOR_COUNTER;
descriptor: Ljava/util/concurrent/atomic/AtomicLong;
flags: (0x0018) ACC_STATIC, ACC_FINAL
static final java.util.concurrent.ThreadFactory EVICTOR_FACTORY;
descriptor: Ljava/util/concurrent/ThreadFactory;
flags: (0x0018) ACC_STATIC, ACC_FINAL
static final reactor.core.scheduler.BoundedElasticScheduler$BoundedServices SHUTDOWN;
descriptor: Lreactor/core/scheduler/BoundedElasticScheduler$BoundedServices;
flags: (0x0018) ACC_STATIC, ACC_FINAL
static final reactor.core.scheduler.BoundedElasticScheduler$BoundedState CREATING;
descriptor: Lreactor/core/scheduler/BoundedElasticScheduler$BoundedState;
flags: (0x0018) ACC_STATIC, ACC_FINAL
final int maxThreads;
descriptor: I
flags: (0x0010) ACC_FINAL
final int maxTaskQueuedPerThread;
descriptor: I
flags: (0x0010) ACC_FINAL
final java.time.Clock clock;
descriptor: Ljava/time/Clock;
flags: (0x0010) ACC_FINAL
final java.util.concurrent.ThreadFactory factory;
descriptor: Ljava/util/concurrent/ThreadFactory;
flags: (0x0010) ACC_FINAL
final long ttlMillis;
descriptor: J
flags: (0x0010) ACC_FINAL
volatile reactor.core.scheduler.BoundedElasticScheduler$BoundedServices boundedServices;
descriptor: Lreactor/core/scheduler/BoundedElasticScheduler$BoundedServices;
flags: (0x0040) ACC_VOLATILE
static final java.util.concurrent.atomic.AtomicReferenceFieldUpdater<reactor.core.scheduler.BoundedElasticScheduler, reactor.core.scheduler.BoundedElasticScheduler$BoundedServices> BOUNDED_SERVICES;
descriptor: Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
flags: (0x0018) ACC_STATIC, ACC_FINAL
Signature: Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater<Lreactor/core/scheduler/BoundedElasticScheduler;Lreactor/core/scheduler/BoundedElasticScheduler$BoundedServices;>;
volatile java.util.concurrent.ScheduledExecutorService evictor;
descriptor: Ljava/util/concurrent/ScheduledExecutorService;
flags: (0x0040) ACC_VOLATILE
static final java.util.concurrent.atomic.AtomicReferenceFieldUpdater<reactor.core.scheduler.BoundedElasticScheduler, java.util.concurrent.ScheduledExecutorService> EVICTOR;
descriptor: Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
flags: (0x0018) ACC_STATIC, ACC_FINAL
Signature: Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater<Lreactor/core/scheduler/BoundedElasticScheduler;Ljava/util/concurrent/ScheduledExecutorService;>;
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=1, args_size=0
0: new java.util.concurrent.atomic.AtomicLong
dup
invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
putstatic reactor.core.scheduler.BoundedElasticScheduler.EVICTOR_COUNTER:Ljava/util/concurrent/atomic/AtomicLong;
1: invokedynamic newThread()Ljava/util/concurrent/ThreadFactory;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Runnable;)Ljava/lang/Thread;
reactor/core/scheduler/BoundedElasticScheduler.lambda$0(Ljava/lang/Runnable;)Ljava/lang/Thread; (6)
(Ljava/lang/Runnable;)Ljava/lang/Thread;
putstatic reactor.core.scheduler.BoundedElasticScheduler.EVICTOR_FACTORY:Ljava/util/concurrent/ThreadFactory;
2: new reactor.core.scheduler.BoundedElasticScheduler$BoundedServices
dup
invokespecial reactor.core.scheduler.BoundedElasticScheduler$BoundedServices.<init>:()V
putstatic reactor.core.scheduler.BoundedElasticScheduler.SHUTDOWN:Lreactor/core/scheduler/BoundedElasticScheduler$BoundedServices;
3: getstatic reactor.core.scheduler.BoundedElasticScheduler.SHUTDOWN:Lreactor/core/scheduler/BoundedElasticScheduler$BoundedServices;
invokevirtual reactor.core.scheduler.BoundedElasticScheduler$BoundedServices.dispose:()V
4: invokestatic java.util.concurrent.Executors.newSingleThreadScheduledExecutor:()Ljava/util/concurrent/ScheduledExecutorService;
astore 0
start local 0 5: aload 0
invokeinterface java.util.concurrent.ScheduledExecutorService.shutdownNow:()Ljava/util/List;
pop
6: new reactor.core.scheduler.BoundedElasticScheduler$1
dup
getstatic reactor.core.scheduler.BoundedElasticScheduler.SHUTDOWN:Lreactor/core/scheduler/BoundedElasticScheduler$BoundedServices;
aload 0
invokespecial reactor.core.scheduler.BoundedElasticScheduler$1.<init>:(Lreactor/core/scheduler/BoundedElasticScheduler$BoundedServices;Ljava/util/concurrent/ScheduledExecutorService;)V
putstatic reactor.core.scheduler.BoundedElasticScheduler.CREATING:Lreactor/core/scheduler/BoundedElasticScheduler$BoundedState;
7: getstatic reactor.core.scheduler.BoundedElasticScheduler.CREATING:Lreactor/core/scheduler/BoundedElasticScheduler$BoundedState;
iconst_m1
putfield reactor.core.scheduler.BoundedElasticScheduler$BoundedState.markCount:I
8: getstatic reactor.core.scheduler.BoundedElasticScheduler.CREATING:Lreactor/core/scheduler/BoundedElasticScheduler$BoundedState;
ldc -1
putfield reactor.core.scheduler.BoundedElasticScheduler$BoundedState.idleSinceTimestamp:J
end local 0 9: ldc Lreactor/core/scheduler/BoundedElasticScheduler;
ldc Lreactor/core/scheduler/BoundedElasticScheduler$BoundedServices;
ldc "boundedServices"
invokestatic java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater:(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
10: putstatic reactor.core.scheduler.BoundedElasticScheduler.BOUNDED_SERVICES:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
11: ldc Lreactor/core/scheduler/BoundedElasticScheduler;
ldc Ljava/util/concurrent/ScheduledExecutorService;
ldc "evictor"
invokestatic java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater:(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
12: putstatic reactor.core.scheduler.BoundedElasticScheduler.EVICTOR:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
13: return
LocalVariableTable:
Start End Slot Name Signature
5 9 0 s Ljava/util/concurrent/ScheduledExecutorService;
void <init>(int, int, java.util.concurrent.ThreadFactory, long, java.time.Clock);
descriptor: (IILjava/util/concurrent/ThreadFactory;JLjava/time/Clock;)V
flags: (0x0000)
Code:
stack=5, locals=7, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 6 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: lload 4
lconst_0
lcmp
ifgt 3
2: new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "TTL must be strictly positive, was "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
lload 4
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc "ms"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals: reactor.core.scheduler.BoundedElasticScheduler int int java.util.concurrent.ThreadFactory long java.time.Clock
StackMap stack:
iload 1
ifgt 5
4: new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "maxThreads must be strictly positive, was "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 1
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
5: StackMap locals:
StackMap stack:
iload 2
ifgt 7
6: new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "maxTaskQueuedPerThread must be strictly positive, was "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 2
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
7: StackMap locals:
StackMap stack:
aload 0
iload 1
putfield reactor.core.scheduler.BoundedElasticScheduler.maxThreads:I
8: aload 0
iload 2
putfield reactor.core.scheduler.BoundedElasticScheduler.maxTaskQueuedPerThread:I
9: aload 0
aload 3
putfield reactor.core.scheduler.BoundedElasticScheduler.factory:Ljava/util/concurrent/ThreadFactory;
10: aload 0
aload 6
ldc "A Clock must be provided"
invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
checkcast java.time.Clock
putfield reactor.core.scheduler.BoundedElasticScheduler.clock:Ljava/time/Clock;
11: aload 0
lload 4
putfield reactor.core.scheduler.BoundedElasticScheduler.ttlMillis:J
12: aload 0
getstatic reactor.core.scheduler.BoundedElasticScheduler.SHUTDOWN:Lreactor/core/scheduler/BoundedElasticScheduler$BoundedServices;
putfield reactor.core.scheduler.BoundedElasticScheduler.boundedServices:Lreactor/core/scheduler/BoundedElasticScheduler$BoundedServices;
13: return
end local 6 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lreactor/core/scheduler/BoundedElasticScheduler;
0 14 1 maxThreads I
0 14 2 maxTaskQueuedPerThread I
0 14 3 threadFactory Ljava/util/concurrent/ThreadFactory;
0 14 4 ttlMillis J
0 14 6 clock Ljava/time/Clock;
MethodParameters:
Name Flags
maxThreads
maxTaskQueuedPerThread
threadFactory
ttlMillis
clock
void <init>(int, int, java.util.concurrent.ThreadFactory, int);
descriptor: (IILjava/util/concurrent/ThreadFactory;I)V
flags: (0x0000)
Code:
stack=8, locals=5, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
iload 1
iload 2
aload 3
iload 4
i2l
ldc 1000
lmul
1: getstatic reactor.core.scheduler.BoundedElasticScheduler$BoundedServices.ZONE_UTC:Ljava/time/ZoneId;
invokestatic java.time.Clock.tickSeconds:(Ljava/time/ZoneId;)Ljava/time/Clock;
invokespecial reactor.core.scheduler.BoundedElasticScheduler.<init>:(IILjava/util/concurrent/ThreadFactory;JLjava/time/Clock;)V
2: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lreactor/core/scheduler/BoundedElasticScheduler;
0 3 1 maxThreads I
0 3 2 maxTaskQueuedPerThread I
0 3 3 factory Ljava/util/concurrent/ThreadFactory;
0 3 4 ttlSeconds I
MethodParameters:
Name Flags
maxThreads
maxTaskQueuedPerThread
factory
ttlSeconds
reactor.core.scheduler.BoundedElasticScheduler$BoundedScheduledExecutorService createBoundedExecutorService();
descriptor: ()Lreactor/core/scheduler/BoundedElasticScheduler$BoundedScheduledExecutorService;
flags: (0x0000)
Code:
stack=4, locals=1, args_size=1
start local 0 0: new reactor.core.scheduler.BoundedElasticScheduler$BoundedScheduledExecutorService
dup
aload 0
getfield reactor.core.scheduler.BoundedElasticScheduler.maxTaskQueuedPerThread:I
aload 0
getfield reactor.core.scheduler.BoundedElasticScheduler.factory:Ljava/util/concurrent/ThreadFactory;
invokespecial reactor.core.scheduler.BoundedElasticScheduler$BoundedScheduledExecutorService.<init>:(ILjava/util/concurrent/ThreadFactory;)V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lreactor/core/scheduler/BoundedElasticScheduler;
public boolean isDisposed();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: getstatic reactor.core.scheduler.BoundedElasticScheduler.BOUNDED_SERVICES:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
aload 0
invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.get:(Ljava/lang/Object;)Ljava/lang/Object;
getstatic reactor.core.scheduler.BoundedElasticScheduler.SHUTDOWN:Lreactor/core/scheduler/BoundedElasticScheduler$BoundedServices;
if_acmpne 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lreactor/core/scheduler/BoundedElasticScheduler;
public void start();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=5, args_size=1
start local 0 0: StackMap locals:
StackMap stack:
getstatic reactor.core.scheduler.BoundedElasticScheduler.BOUNDED_SERVICES:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
aload 0
invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast reactor.core.scheduler.BoundedElasticScheduler$BoundedServices
astore 1
start local 1 1: aload 1
getstatic reactor.core.scheduler.BoundedElasticScheduler.SHUTDOWN:Lreactor/core/scheduler/BoundedElasticScheduler$BoundedServices;
if_acmpeq 3
2: return
3: StackMap locals: reactor.core.scheduler.BoundedElasticScheduler$BoundedServices
StackMap stack:
new reactor.core.scheduler.BoundedElasticScheduler$BoundedServices
dup
aload 0
invokespecial reactor.core.scheduler.BoundedElasticScheduler$BoundedServices.<init>:(Lreactor/core/scheduler/BoundedElasticScheduler;)V
astore 2
start local 2 4: getstatic reactor.core.scheduler.BoundedElasticScheduler.BOUNDED_SERVICES:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
aload 0
aload 1
aload 2
invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
ifeq 0
5: iconst_1
getstatic reactor.core.scheduler.BoundedElasticScheduler.EVICTOR_FACTORY:Ljava/util/concurrent/ThreadFactory;
invokestatic java.util.concurrent.Executors.newScheduledThreadPool:(ILjava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ScheduledExecutorService;
astore 3
start local 3 6: getstatic reactor.core.scheduler.BoundedElasticScheduler.EVICTOR:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
aload 0
aconst_null
aload 3
invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
ifeq 12
7: aload 3
aload 2
dup
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
pop
invokedynamic run(Lreactor/core/scheduler/BoundedElasticScheduler$BoundedServices;)Ljava/lang/Runnable;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
()V
reactor/core/scheduler/BoundedElasticScheduler$BoundedServices.eviction()V (5)
()V
aload 0
getfield reactor.core.scheduler.BoundedElasticScheduler.ttlMillis:J
aload 0
getfield reactor.core.scheduler.BoundedElasticScheduler.ttlMillis:J
getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
invokeinterface java.util.concurrent.ScheduledExecutorService.scheduleAtFixedRate:(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
pop
8: goto 13
9: StackMap locals: reactor.core.scheduler.BoundedElasticScheduler reactor.core.scheduler.BoundedElasticScheduler$BoundedServices reactor.core.scheduler.BoundedElasticScheduler$BoundedServices java.util.concurrent.ScheduledExecutorService
StackMap stack: java.util.concurrent.RejectedExecutionException
astore 4
start local 4 10: aload 0
invokevirtual reactor.core.scheduler.BoundedElasticScheduler.isDisposed:()Z
ifne 13
11: aload 4
athrow
end local 4 12: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.concurrent.ScheduledExecutorService.shutdownNow:()Ljava/util/List;
pop
13: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lreactor/core/scheduler/BoundedElasticScheduler;
1 14 1 services Lreactor/core/scheduler/BoundedElasticScheduler$BoundedServices;
4 14 2 newServices Lreactor/core/scheduler/BoundedElasticScheduler$BoundedServices;
6 14 3 e Ljava/util/concurrent/ScheduledExecutorService;
10 12 4 ree Ljava/util/concurrent/RejectedExecutionException;
Exception table:
from to target type
7 8 9 Class java.util.concurrent.RejectedExecutionException
public void dispose();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=1
start local 0 0: getstatic reactor.core.scheduler.BoundedElasticScheduler.BOUNDED_SERVICES:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
aload 0
invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast reactor.core.scheduler.BoundedElasticScheduler$BoundedServices
astore 1
start local 1 1: aload 1
getstatic reactor.core.scheduler.BoundedElasticScheduler.SHUTDOWN:Lreactor/core/scheduler/BoundedElasticScheduler$BoundedServices;
if_acmpeq 6
getstatic reactor.core.scheduler.BoundedElasticScheduler.BOUNDED_SERVICES:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
aload 0
aload 1
getstatic reactor.core.scheduler.BoundedElasticScheduler.SHUTDOWN:Lreactor/core/scheduler/BoundedElasticScheduler$BoundedServices;
invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
ifeq 6
2: getstatic reactor.core.scheduler.BoundedElasticScheduler.EVICTOR:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
aload 0
aconst_null
invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.getAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.concurrent.ScheduledExecutorService
astore 2
start local 2 3: aload 2
ifnull 5
4: aload 2
invokeinterface java.util.concurrent.ScheduledExecutorService.shutdownNow:()Ljava/util/List;
pop
5: StackMap locals: reactor.core.scheduler.BoundedElasticScheduler$BoundedServices java.util.concurrent.ScheduledExecutorService
StackMap stack:
aload 1
invokevirtual reactor.core.scheduler.BoundedElasticScheduler$BoundedServices.dispose:()V
end local 2 6: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lreactor/core/scheduler/BoundedElasticScheduler;
1 7 1 services Lreactor/core/scheduler/BoundedElasticScheduler$BoundedServices;
3 6 2 e Ljava/util/concurrent/ScheduledExecutorService;
public reactor.core.Disposable schedule(java.lang.Runnable);
descriptor: (Ljava/lang/Runnable;)Lreactor/core/Disposable;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=3, args_size=2
start local 0 start local 1 0: getstatic reactor.core.scheduler.BoundedElasticScheduler.BOUNDED_SERVICES:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
aload 0
invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast reactor.core.scheduler.BoundedElasticScheduler$BoundedServices
invokevirtual reactor.core.scheduler.BoundedElasticScheduler$BoundedServices.pick:()Lreactor/core/scheduler/BoundedElasticScheduler$BoundedState;
astore 2
start local 2 1: aload 2
getfield reactor.core.scheduler.BoundedElasticScheduler$BoundedState.executor:Ljava/util/concurrent/ScheduledExecutorService;
aload 1
aload 2
lconst_0
getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
invokestatic reactor.core.scheduler.Schedulers.directSchedule:(Ljava/util/concurrent/ScheduledExecutorService;Ljava/lang/Runnable;Lreactor/core/Disposable;JLjava/util/concurrent/TimeUnit;)Lreactor/core/Disposable;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lreactor/core/scheduler/BoundedElasticScheduler;
0 2 1 task Ljava/lang/Runnable;
1 2 2 picked Lreactor/core/scheduler/BoundedElasticScheduler$BoundedState;
MethodParameters:
Name Flags
task
public reactor.core.Disposable schedule(java.lang.Runnable, long, java.util.concurrent.TimeUnit);
descriptor: (Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Lreactor/core/Disposable;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 4 0: getstatic reactor.core.scheduler.BoundedElasticScheduler.BOUNDED_SERVICES:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
aload 0
invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast reactor.core.scheduler.BoundedElasticScheduler$BoundedServices
invokevirtual reactor.core.scheduler.BoundedElasticScheduler$BoundedServices.pick:()Lreactor/core/scheduler/BoundedElasticScheduler$BoundedState;
astore 5
start local 5 1: aload 5
getfield reactor.core.scheduler.BoundedElasticScheduler$BoundedState.executor:Ljava/util/concurrent/ScheduledExecutorService;
aload 1
aload 5
lload 2
aload 4
invokestatic reactor.core.scheduler.Schedulers.directSchedule:(Ljava/util/concurrent/ScheduledExecutorService;Ljava/lang/Runnable;Lreactor/core/Disposable;JLjava/util/concurrent/TimeUnit;)Lreactor/core/Disposable;
areturn
end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lreactor/core/scheduler/BoundedElasticScheduler;
0 2 1 task Ljava/lang/Runnable;
0 2 2 delay J
0 2 4 unit Ljava/util/concurrent/TimeUnit;
1 2 5 picked Lreactor/core/scheduler/BoundedElasticScheduler$BoundedState;
MethodParameters:
Name Flags
task
delay
unit
public reactor.core.Disposable schedulePeriodically(java.lang.Runnable, long, long, java.util.concurrent.TimeUnit);
descriptor: (Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Lreactor/core/Disposable;
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=9, args_size=5
start local 0 start local 1 start local 2 start local 4 start local 6 0: getstatic reactor.core.scheduler.BoundedElasticScheduler.BOUNDED_SERVICES:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
aload 0
invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast reactor.core.scheduler.BoundedElasticScheduler$BoundedServices
invokevirtual reactor.core.scheduler.BoundedElasticScheduler$BoundedServices.pick:()Lreactor/core/scheduler/BoundedElasticScheduler$BoundedState;
astore 7
start local 7 1: aload 7
getfield reactor.core.scheduler.BoundedElasticScheduler$BoundedState.executor:Ljava/util/concurrent/ScheduledExecutorService;
2: aload 1
3: lload 2
4: lload 4
5: aload 6
6: invokestatic reactor.core.scheduler.Schedulers.directSchedulePeriodically:(Ljava/util/concurrent/ScheduledExecutorService;Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Lreactor/core/Disposable;
astore 8
start local 8 7: iconst_2
anewarray reactor.core.Disposable
dup
iconst_0
aload 8
aastore
dup
iconst_1
aload 7
aastore
invokestatic reactor.core.Disposables.composite:([Lreactor/core/Disposable;)Lreactor/core/Disposable$Composite;
areturn
end local 8 end local 7 end local 6 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lreactor/core/scheduler/BoundedElasticScheduler;
0 8 1 task Ljava/lang/Runnable;
0 8 2 initialDelay J
0 8 4 period J
0 8 6 unit Ljava/util/concurrent/TimeUnit;
1 8 7 picked Lreactor/core/scheduler/BoundedElasticScheduler$BoundedState;
7 8 8 scheduledTask Lreactor/core/Disposable;
MethodParameters:
Name Flags
task
initialDelay
period
unit
public java.lang.String toString();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=2, args_size=1
start local 0 0: new java.lang.StringBuilder
dup
ldc "boundedElastic"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
1: bipush 40
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
2: astore 1
start local 1 3: aload 0
getfield reactor.core.scheduler.BoundedElasticScheduler.factory:Ljava/util/concurrent/ThreadFactory;
instanceof reactor.core.scheduler.ReactorThreadFactory
ifeq 5
4: aload 1
bipush 34
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
aload 0
getfield reactor.core.scheduler.BoundedElasticScheduler.factory:Ljava/util/concurrent/ThreadFactory;
checkcast reactor.core.scheduler.ReactorThreadFactory
invokevirtual reactor.core.scheduler.ReactorThreadFactory.get:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "\","
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
5: StackMap locals: java.lang.StringBuilder
StackMap stack:
aload 1
ldc "maxThreads="
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield reactor.core.scheduler.BoundedElasticScheduler.maxThreads:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
6: ldc ",maxTaskQueuedPerThread="
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield reactor.core.scheduler.BoundedElasticScheduler.maxTaskQueuedPerThread:I
ldc 2147483647
if_icmpne 7
ldc "unbounded"
goto 8
StackMap locals:
StackMap stack: java.lang.StringBuilder
7: aload 0
getfield reactor.core.scheduler.BoundedElasticScheduler.maxTaskQueuedPerThread:I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
StackMap locals: reactor.core.scheduler.BoundedElasticScheduler java.lang.StringBuilder
StackMap stack: java.lang.StringBuilder java.io.Serializable
8: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
9: ldc ",ttl="
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
10: aload 0
getfield reactor.core.scheduler.BoundedElasticScheduler.ttlMillis:J
ldc 1000
lcmp
ifge 13
11: aload 1
aload 0
getfield reactor.core.scheduler.BoundedElasticScheduler.ttlMillis:J
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc "ms)"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
12: goto 14
13: StackMap locals:
StackMap stack:
aload 1
aload 0
getfield reactor.core.scheduler.BoundedElasticScheduler.ttlMillis:J
ldc 1000
ldiv
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc "s)"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
14: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lreactor/core/scheduler/BoundedElasticScheduler;
3 15 1 ts Ljava/lang/StringBuilder;
int estimateSize();
descriptor: ()I
flags: (0x0000)
Code:
stack=2, locals=1, args_size=1
start local 0 0: getstatic reactor.core.scheduler.BoundedElasticScheduler.BOUNDED_SERVICES:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
aload 0
invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast reactor.core.scheduler.BoundedElasticScheduler$BoundedServices
invokevirtual reactor.core.scheduler.BoundedElasticScheduler$BoundedServices.get:()I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lreactor/core/scheduler/BoundedElasticScheduler;
int estimateBusy();
descriptor: ()I
flags: (0x0000)
Code:
stack=2, locals=1, args_size=1
start local 0 0: getstatic reactor.core.scheduler.BoundedElasticScheduler.BOUNDED_SERVICES:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
aload 0
invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast reactor.core.scheduler.BoundedElasticScheduler$BoundedServices
getfield reactor.core.scheduler.BoundedElasticScheduler$BoundedServices.busyQueue:Ljava/util/concurrent/PriorityBlockingQueue;
invokevirtual java.util.concurrent.PriorityBlockingQueue.size:()I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lreactor/core/scheduler/BoundedElasticScheduler;
int estimateIdle();
descriptor: ()I
flags: (0x0000)
Code:
stack=2, locals=1, args_size=1
start local 0 0: getstatic reactor.core.scheduler.BoundedElasticScheduler.BOUNDED_SERVICES:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
aload 0
invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast reactor.core.scheduler.BoundedElasticScheduler$BoundedServices
getfield reactor.core.scheduler.BoundedElasticScheduler$BoundedServices.idleQueue:Ljava/util/Deque;
invokeinterface java.util.Deque.size:()I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lreactor/core/scheduler/BoundedElasticScheduler;
int estimateRemainingTaskCapacity();
descriptor: ()I
flags: (0x0000)
Code:
stack=2, locals=6, args_size=1
start local 0 0: getstatic reactor.core.scheduler.BoundedElasticScheduler.BOUNDED_SERVICES:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
aload 0
invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast reactor.core.scheduler.BoundedElasticScheduler$BoundedServices
getfield reactor.core.scheduler.BoundedElasticScheduler$BoundedServices.busyQueue:Ljava/util/concurrent/PriorityBlockingQueue;
astore 1
start local 1 1: aload 0
getfield reactor.core.scheduler.BoundedElasticScheduler.maxTaskQueuedPerThread:I
aload 0
getfield reactor.core.scheduler.BoundedElasticScheduler.maxThreads:I
imul
istore 2
start local 2 2: aload 1
invokeinterface java.util.Queue.iterator:()Ljava/util/Iterator;
astore 4
goto 9
StackMap locals: reactor.core.scheduler.BoundedElasticScheduler java.util.Queue int top java.util.Iterator
StackMap stack:
3: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast reactor.core.scheduler.BoundedElasticScheduler$BoundedState
astore 3
start local 3 4: aload 3
invokevirtual reactor.core.scheduler.BoundedElasticScheduler$BoundedState.estimateQueueSize:()I
istore 5
start local 5 5: iload 5
iflt 8
6: iload 2
iload 5
isub
istore 2
7: goto 9
8: StackMap locals: reactor.core.scheduler.BoundedElasticScheduler java.util.Queue int reactor.core.scheduler.BoundedElasticScheduler$BoundedState java.util.Iterator int
StackMap stack:
iconst_m1
ireturn
end local 5 end local 3 9: StackMap locals: reactor.core.scheduler.BoundedElasticScheduler java.util.Queue int top java.util.Iterator
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 3
10: iload 2
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lreactor/core/scheduler/BoundedElasticScheduler;
1 11 1 busyQueue Ljava/util/Queue<Lreactor/core/scheduler/BoundedElasticScheduler$BoundedState;>;
2 11 2 totalTaskCapacity I
4 9 3 state Lreactor/core/scheduler/BoundedElasticScheduler$BoundedState;
5 9 5 stateQueueSize I
public java.lang.Object scanUnsafe(reactor.core.Scannable$Attr);
descriptor: (Lreactor/core/Scannable$Attr;)Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 1
getstatic reactor.core.Scannable$Attr.TERMINATED:Lreactor/core/Scannable$Attr;
if_acmpeq 1
aload 1
getstatic reactor.core.Scannable$Attr.CANCELLED:Lreactor/core/Scannable$Attr;
if_acmpne 2
StackMap locals:
StackMap stack:
1: aload 0
invokevirtual reactor.core.scheduler.BoundedElasticScheduler.isDisposed:()Z
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
areturn
2: StackMap locals:
StackMap stack:
aload 1
getstatic reactor.core.Scannable$Attr.BUFFERED:Lreactor/core/Scannable$Attr;
if_acmpne 3
aload 0
invokevirtual reactor.core.scheduler.BoundedElasticScheduler.estimateSize:()I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
areturn
3: StackMap locals:
StackMap stack:
aload 1
getstatic reactor.core.Scannable$Attr.CAPACITY:Lreactor/core/Scannable$Attr;
if_acmpne 4
aload 0
getfield reactor.core.scheduler.BoundedElasticScheduler.maxThreads:I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
areturn
4: StackMap locals:
StackMap stack:
aload 1
getstatic reactor.core.Scannable$Attr.NAME:Lreactor/core/Scannable$Attr;
if_acmpne 5
aload 0
invokevirtual reactor.core.scheduler.BoundedElasticScheduler.toString:()Ljava/lang/String;
areturn
5: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lreactor/core/scheduler/BoundedElasticScheduler;
0 6 1 key Lreactor/core/Scannable$Attr;
MethodParameters:
Name Flags
key
public java.util.stream.Stream<? extends reactor.core.Scannable> inners();
descriptor: ()Ljava/util/stream/Stream;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: getstatic reactor.core.scheduler.BoundedElasticScheduler.BOUNDED_SERVICES:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
aload 0
invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast reactor.core.scheduler.BoundedElasticScheduler$BoundedServices
astore 1
start local 1 1: aload 1
getfield reactor.core.scheduler.BoundedElasticScheduler$BoundedServices.busyQueue:Ljava/util/concurrent/PriorityBlockingQueue;
invokevirtual java.util.concurrent.PriorityBlockingQueue.stream:()Ljava/util/stream/Stream;
aload 1
getfield reactor.core.scheduler.BoundedElasticScheduler$BoundedServices.idleQueue:Ljava/util/Deque;
invokeinterface java.util.Deque.stream:()Ljava/util/stream/Stream;
invokestatic java.util.stream.Stream.concat:(Ljava/util/stream/Stream;Ljava/util/stream/Stream;)Ljava/util/stream/Stream;
2: invokedynamic test()Ljava/util/function/Predicate;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;)Z
reactor/core/scheduler/BoundedElasticScheduler.lambda$2(Lreactor/core/scheduler/BoundedElasticScheduler$BoundedState;)Z (6)
(Lreactor/core/scheduler/BoundedElasticScheduler$BoundedState;)Z
invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
3: areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lreactor/core/scheduler/BoundedElasticScheduler;
1 4 1 services Lreactor/core/scheduler/BoundedElasticScheduler$BoundedServices;
Signature: ()Ljava/util/stream/Stream<+Lreactor/core/Scannable;>;
public reactor.core.scheduler.Scheduler$Worker createWorker();
descriptor: ()Lreactor/core/scheduler/Scheduler$Worker;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=1
start local 0 0: getstatic reactor.core.scheduler.BoundedElasticScheduler.BOUNDED_SERVICES:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
aload 0
invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast reactor.core.scheduler.BoundedElasticScheduler$BoundedServices
1: invokevirtual reactor.core.scheduler.BoundedElasticScheduler$BoundedServices.pick:()Lreactor/core/scheduler/BoundedElasticScheduler$BoundedState;
2: astore 1
start local 1 3: new reactor.core.scheduler.ExecutorServiceWorker
dup
aload 1
getfield reactor.core.scheduler.BoundedElasticScheduler$BoundedState.executor:Ljava/util/concurrent/ScheduledExecutorService;
invokespecial reactor.core.scheduler.ExecutorServiceWorker.<init>:(Ljava/util/concurrent/ScheduledExecutorService;)V
astore 2
start local 2 4: aload 2
getfield reactor.core.scheduler.ExecutorServiceWorker.disposables:Lreactor/core/Disposable$Composite;
aload 1
invokeinterface reactor.core.Disposable$Composite.add:(Lreactor/core/Disposable;)Z
pop
5: aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lreactor/core/scheduler/BoundedElasticScheduler;
3 6 1 picked Lreactor/core/scheduler/BoundedElasticScheduler$BoundedState;
4 6 2 worker Lreactor/core/scheduler/ExecutorServiceWorker;
private static java.lang.Thread lambda$0(java.lang.Runnable);
descriptor: (Ljava/lang/Runnable;)Ljava/lang/Thread;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=6, locals=2, args_size=1
start local 0 0: new java.lang.Thread
dup
aload 0
new java.lang.StringBuilder
dup
ldc "boundedElastic-evictor-"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
getstatic reactor.core.scheduler.BoundedElasticScheduler.EVICTOR_COUNTER:Ljava/util/concurrent/atomic/AtomicLong;
invokevirtual java.util.concurrent.atomic.AtomicLong.incrementAndGet:()J
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.Thread.<init>:(Ljava/lang/Runnable;Ljava/lang/String;)V
astore 1
start local 1 1: aload 1
iconst_1
invokevirtual java.lang.Thread.setDaemon:(Z)V
2: aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 r Ljava/lang/Runnable;
1 3 1 t Ljava/lang/Thread;
private static boolean lambda$2(reactor.core.scheduler.BoundedElasticScheduler$BoundedState);
descriptor: (Lreactor/core/scheduler/BoundedElasticScheduler$BoundedState;)Z
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
ifnull 1
aload 0
getstatic reactor.core.scheduler.BoundedElasticScheduler.CREATING:Lreactor/core/scheduler/BoundedElasticScheduler$BoundedState;
if_acmpeq 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 obj Lreactor/core/scheduler/BoundedElasticScheduler$BoundedState;
}
SourceFile: "BoundedElasticScheduler.java"
NestMembers:
reactor.core.scheduler.BoundedElasticScheduler$1 reactor.core.scheduler.BoundedElasticScheduler$BoundedScheduledExecutorService reactor.core.scheduler.BoundedElasticScheduler$BoundedServices reactor.core.scheduler.BoundedElasticScheduler$BoundedState
InnerClasses:
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
public abstract Composite = reactor.core.Disposable$Composite of reactor.core.Disposable
public Attr = reactor.core.Scannable$Attr of reactor.core.Scannable
reactor.core.scheduler.BoundedElasticScheduler$1
final BoundedScheduledExecutorService = reactor.core.scheduler.BoundedElasticScheduler$BoundedScheduledExecutorService of reactor.core.scheduler.BoundedElasticScheduler
final BoundedServices = reactor.core.scheduler.BoundedElasticScheduler$BoundedServices of reactor.core.scheduler.BoundedElasticScheduler
BoundedState = reactor.core.scheduler.BoundedElasticScheduler$BoundedState of reactor.core.scheduler.BoundedElasticScheduler
public abstract Worker = reactor.core.scheduler.Scheduler$Worker of reactor.core.scheduler.Scheduler