public class com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault implements com.netflix.hystrix.HystrixThreadPool
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault
super_class: java.lang.Object
{
private static final org.slf4j.Logger logger;
descriptor: Lorg/slf4j/Logger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final com.netflix.hystrix.HystrixThreadPoolProperties properties;
descriptor: Lcom/netflix/hystrix/HystrixThreadPoolProperties;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.concurrent.BlockingQueue<java.lang.Runnable> queue;
descriptor: Ljava/util/concurrent/BlockingQueue;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/concurrent/BlockingQueue<Ljava/lang/Runnable;>;
private final java.util.concurrent.ThreadPoolExecutor threadPool;
descriptor: Ljava/util/concurrent/ThreadPoolExecutor;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final com.netflix.hystrix.HystrixThreadPoolMetrics metrics;
descriptor: Lcom/netflix/hystrix/HystrixThreadPoolMetrics;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int queueSize;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lcom/netflix/hystrix/HystrixThreadPool$HystrixThreadPoolDefault;
invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
putstatic com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.logger:Lorg/slf4j/Logger;
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(com.netflix.hystrix.HystrixThreadPoolKey, com.netflix.hystrix.HystrixThreadPoolProperties$Setter);
descriptor: (Lcom/netflix/hystrix/HystrixThreadPoolKey;Lcom/netflix/hystrix/HystrixThreadPoolProperties$Setter;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
aload 2
invokestatic com.netflix.hystrix.strategy.properties.HystrixPropertiesFactory.getThreadPoolProperties:(Lcom/netflix/hystrix/HystrixThreadPoolKey;Lcom/netflix/hystrix/HystrixThreadPoolProperties$Setter;)Lcom/netflix/hystrix/HystrixThreadPoolProperties;
putfield com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.properties:Lcom/netflix/hystrix/HystrixThreadPoolProperties;
2: invokestatic com.netflix.hystrix.strategy.HystrixPlugins.getInstance:()Lcom/netflix/hystrix/strategy/HystrixPlugins;
invokevirtual com.netflix.hystrix.strategy.HystrixPlugins.getConcurrencyStrategy:()Lcom/netflix/hystrix/strategy/concurrency/HystrixConcurrencyStrategy;
astore 3
start local 3 3: aload 0
aload 0
getfield com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.properties:Lcom/netflix/hystrix/HystrixThreadPoolProperties;
invokevirtual com.netflix.hystrix.HystrixThreadPoolProperties.maxQueueSize:()Lcom/netflix/hystrix/strategy/properties/HystrixProperty;
invokeinterface com.netflix.hystrix.strategy.properties.HystrixProperty.get:()Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
putfield com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.queueSize:I
4: aload 0
aload 1
5: aload 3
aload 1
aload 0
getfield com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.properties:Lcom/netflix/hystrix/HystrixThreadPoolProperties;
invokevirtual com.netflix.hystrix.strategy.concurrency.HystrixConcurrencyStrategy.getThreadPool:(Lcom/netflix/hystrix/HystrixThreadPoolKey;Lcom/netflix/hystrix/HystrixThreadPoolProperties;)Ljava/util/concurrent/ThreadPoolExecutor;
6: aload 0
getfield com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.properties:Lcom/netflix/hystrix/HystrixThreadPoolProperties;
7: invokestatic com.netflix.hystrix.HystrixThreadPoolMetrics.getInstance:(Lcom/netflix/hystrix/HystrixThreadPoolKey;Ljava/util/concurrent/ThreadPoolExecutor;Lcom/netflix/hystrix/HystrixThreadPoolProperties;)Lcom/netflix/hystrix/HystrixThreadPoolMetrics;
putfield com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.metrics:Lcom/netflix/hystrix/HystrixThreadPoolMetrics;
8: aload 0
aload 0
getfield com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.metrics:Lcom/netflix/hystrix/HystrixThreadPoolMetrics;
invokevirtual com.netflix.hystrix.HystrixThreadPoolMetrics.getThreadPool:()Ljava/util/concurrent/ThreadPoolExecutor;
putfield com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.threadPool:Ljava/util/concurrent/ThreadPoolExecutor;
9: aload 0
aload 0
getfield com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.threadPool:Ljava/util/concurrent/ThreadPoolExecutor;
invokevirtual java.util.concurrent.ThreadPoolExecutor.getQueue:()Ljava/util/concurrent/BlockingQueue;
putfield com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.queue:Ljava/util/concurrent/BlockingQueue;
10: aload 1
aload 0
getfield com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.metrics:Lcom/netflix/hystrix/HystrixThreadPoolMetrics;
aload 0
getfield com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.properties:Lcom/netflix/hystrix/HystrixThreadPoolProperties;
invokestatic com.netflix.hystrix.strategy.metrics.HystrixMetricsPublisherFactory.createOrRetrievePublisherForThreadPool:(Lcom/netflix/hystrix/HystrixThreadPoolKey;Lcom/netflix/hystrix/HystrixThreadPoolMetrics;Lcom/netflix/hystrix/HystrixThreadPoolProperties;)Lcom/netflix/hystrix/strategy/metrics/HystrixMetricsPublisherThreadPool;
pop
11: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lcom/netflix/hystrix/HystrixThreadPool$HystrixThreadPoolDefault;
0 12 1 threadPoolKey Lcom/netflix/hystrix/HystrixThreadPoolKey;
0 12 2 propertiesDefaults Lcom/netflix/hystrix/HystrixThreadPoolProperties$Setter;
3 12 3 concurrencyStrategy Lcom/netflix/hystrix/strategy/concurrency/HystrixConcurrencyStrategy;
MethodParameters:
Name Flags
threadPoolKey
propertiesDefaults
public java.util.concurrent.ThreadPoolExecutor getExecutor();
descriptor: ()Ljava/util/concurrent/ThreadPoolExecutor;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.touchConfig:()V
1: aload 0
getfield com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.threadPool:Ljava/util/concurrent/ThreadPoolExecutor;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/netflix/hystrix/HystrixThreadPool$HystrixThreadPoolDefault;
public rx.Scheduler getScheduler();
descriptor: ()Lrx/Scheduler;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
new com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault$1
dup
aload 0
invokespecial com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault$1.<init>:(Lcom/netflix/hystrix/HystrixThreadPool$HystrixThreadPoolDefault;)V
invokevirtual com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.getScheduler:(Lrx/functions/Func0;)Lrx/Scheduler;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/netflix/hystrix/HystrixThreadPool$HystrixThreadPoolDefault;
public rx.Scheduler getScheduler(rx.functions.Func0<java.lang.Boolean>);
descriptor: (Lrx/functions/Func0;)Lrx/Scheduler;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.touchConfig:()V
1: new com.netflix.hystrix.strategy.concurrency.HystrixContextScheduler
dup
invokestatic com.netflix.hystrix.strategy.HystrixPlugins.getInstance:()Lcom/netflix/hystrix/strategy/HystrixPlugins;
invokevirtual com.netflix.hystrix.strategy.HystrixPlugins.getConcurrencyStrategy:()Lcom/netflix/hystrix/strategy/concurrency/HystrixConcurrencyStrategy;
aload 0
aload 1
invokespecial com.netflix.hystrix.strategy.concurrency.HystrixContextScheduler.<init>:(Lcom/netflix/hystrix/strategy/concurrency/HystrixConcurrencyStrategy;Lcom/netflix/hystrix/HystrixThreadPool;Lrx/functions/Func0;)V
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/netflix/hystrix/HystrixThreadPool$HystrixThreadPoolDefault;
0 2 1 shouldInterruptThread Lrx/functions/Func0<Ljava/lang/Boolean;>;
Signature: (Lrx/functions/Func0<Ljava/lang/Boolean;>;)Lrx/Scheduler;
MethodParameters:
Name Flags
shouldInterruptThread
private void touchConfig();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=6, args_size=1
start local 0 0: aload 0
getfield com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.properties:Lcom/netflix/hystrix/HystrixThreadPoolProperties;
invokevirtual com.netflix.hystrix.HystrixThreadPoolProperties.coreSize:()Lcom/netflix/hystrix/strategy/properties/HystrixProperty;
invokeinterface com.netflix.hystrix.strategy.properties.HystrixProperty.get:()Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
istore 1
start local 1 1: aload 0
getfield com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.properties:Lcom/netflix/hystrix/HystrixThreadPoolProperties;
invokevirtual com.netflix.hystrix.HystrixThreadPoolProperties.maximumSize:()Lcom/netflix/hystrix/strategy/properties/HystrixProperty;
invokeinterface com.netflix.hystrix.strategy.properties.HystrixProperty.get:()Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
istore 2
start local 2 2: aload 0
getfield com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.properties:Lcom/netflix/hystrix/HystrixThreadPoolProperties;
invokevirtual com.netflix.hystrix.HystrixThreadPoolProperties.actualMaximumSize:()Ljava/lang/Integer;
invokevirtual java.lang.Integer.intValue:()I
istore 3
start local 3 3: aload 0
getfield com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.properties:Lcom/netflix/hystrix/HystrixThreadPoolProperties;
invokevirtual com.netflix.hystrix.HystrixThreadPoolProperties.getAllowMaximumSizeToDivergeFromCoreSize:()Lcom/netflix/hystrix/strategy/properties/HystrixProperty;
invokeinterface com.netflix.hystrix.strategy.properties.HystrixProperty.get:()Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
istore 4
start local 4 4: iconst_0
istore 5
start local 5 5: iload 4
ifeq 8
iload 2
iload 1
if_icmpge 8
6: iload 1
istore 3
7: iconst_1
istore 5
8: StackMap locals: com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault int int int int int
StackMap stack:
aload 0
getfield com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.threadPool:Ljava/util/concurrent/ThreadPoolExecutor;
invokevirtual java.util.concurrent.ThreadPoolExecutor.getCorePoolSize:()I
iload 1
if_icmpne 9
iload 4
ifeq 16
aload 0
getfield com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.threadPool:Ljava/util/concurrent/ThreadPoolExecutor;
invokevirtual java.util.concurrent.ThreadPoolExecutor.getMaximumPoolSize:()I
iload 3
if_icmpeq 16
9: StackMap locals:
StackMap stack:
iload 5
ifeq 14
10: getstatic com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.logger:Lorg/slf4j/Logger;
new java.lang.StringBuilder
dup
ldc "Hystrix ThreadPool configuration for : "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.metrics:Lcom/netflix/hystrix/HystrixThreadPoolMetrics;
invokevirtual com.netflix.hystrix.HystrixThreadPoolMetrics.getThreadPoolKey:()Lcom/netflix/hystrix/HystrixThreadPoolKey;
invokeinterface com.netflix.hystrix.HystrixThreadPoolKey.name:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " is trying to set coreSize = "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
11: iload 1
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " and maximumSize = "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 2
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ". Maximum size will be set to "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
12: iload 3
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ", the coreSize value, since it must be equal to or greater than the coreSize value"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
13: invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;)V
14: StackMap locals:
StackMap stack:
aload 0
getfield com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.threadPool:Ljava/util/concurrent/ThreadPoolExecutor;
iload 1
invokevirtual java.util.concurrent.ThreadPoolExecutor.setCorePoolSize:(I)V
15: aload 0
getfield com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.threadPool:Ljava/util/concurrent/ThreadPoolExecutor;
iload 3
invokevirtual java.util.concurrent.ThreadPoolExecutor.setMaximumPoolSize:(I)V
16: StackMap locals:
StackMap stack:
aload 0
getfield com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.threadPool:Ljava/util/concurrent/ThreadPoolExecutor;
aload 0
getfield com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.properties:Lcom/netflix/hystrix/HystrixThreadPoolProperties;
invokevirtual com.netflix.hystrix.HystrixThreadPoolProperties.keepAliveTimeMinutes:()Lcom/netflix/hystrix/strategy/properties/HystrixProperty;
invokeinterface com.netflix.hystrix.strategy.properties.HystrixProperty.get:()Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
i2l
getstatic java.util.concurrent.TimeUnit.MINUTES:Ljava/util/concurrent/TimeUnit;
invokevirtual java.util.concurrent.ThreadPoolExecutor.setKeepAliveTime:(JLjava/util/concurrent/TimeUnit;)V
17: return
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 18 0 this Lcom/netflix/hystrix/HystrixThreadPool$HystrixThreadPoolDefault;
1 18 1 dynamicCoreSize I
2 18 2 configuredMaximumSize I
3 18 3 dynamicMaximumSize I
4 18 4 allowSizesToDiverge Z
5 18 5 maxTooLow Z
public void markThreadExecution();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.metrics:Lcom/netflix/hystrix/HystrixThreadPoolMetrics;
invokevirtual com.netflix.hystrix.HystrixThreadPoolMetrics.markThreadExecution:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/netflix/hystrix/HystrixThreadPool$HystrixThreadPoolDefault;
public void markThreadCompletion();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.metrics:Lcom/netflix/hystrix/HystrixThreadPoolMetrics;
invokevirtual com.netflix.hystrix.HystrixThreadPoolMetrics.markThreadCompletion:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/netflix/hystrix/HystrixThreadPool$HystrixThreadPoolDefault;
public void markThreadRejection();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.metrics:Lcom/netflix/hystrix/HystrixThreadPoolMetrics;
invokevirtual com.netflix.hystrix.HystrixThreadPoolMetrics.markThreadRejection:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/netflix/hystrix/HystrixThreadPool$HystrixThreadPoolDefault;
public boolean isQueueSpaceAvailable();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.queueSize:I
ifgt 2
1: iconst_1
ireturn
2: StackMap locals:
StackMap stack:
aload 0
getfield com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.threadPool:Ljava/util/concurrent/ThreadPoolExecutor;
invokevirtual java.util.concurrent.ThreadPoolExecutor.getQueue:()Ljava/util/concurrent/BlockingQueue;
invokeinterface java.util.concurrent.BlockingQueue.size:()I
aload 0
getfield com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.properties:Lcom/netflix/hystrix/HystrixThreadPoolProperties;
invokevirtual com.netflix.hystrix.HystrixThreadPoolProperties.queueSizeRejectionThreshold:()Lcom/netflix/hystrix/strategy/properties/HystrixProperty;
invokeinterface com.netflix.hystrix.strategy.properties.HystrixProperty.get:()Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
if_icmpge 3
iconst_1
ireturn
StackMap locals:
StackMap stack:
3: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/netflix/hystrix/HystrixThreadPool$HystrixThreadPoolDefault;
public java.util.concurrent.ExecutorService getExecutor();
descriptor: ()Ljava/util/concurrent/ExecutorService;
flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=1, locals=1, args_size=1
0: aload 0
invokevirtual com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault.getExecutor:()Ljava/util/concurrent/ThreadPoolExecutor;
areturn
LocalVariableTable:
Start End Slot Name Signature
}
SourceFile: "HystrixThreadPool.java"
NestHost: com.netflix.hystrix.HystrixThreadPool
InnerClasses:
public HystrixThreadPoolDefault = com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault of com.netflix.hystrix.HystrixThreadPool
com.netflix.hystrix.HystrixThreadPool$HystrixThreadPoolDefault$1
public Setter = com.netflix.hystrix.HystrixThreadPoolProperties$Setter of com.netflix.hystrix.HystrixThreadPoolProperties