public abstract class org.glassfish.grizzly.threadpool.AbstractThreadPool extends java.util.concurrent.AbstractExecutorService implements java.lang.Thread$UncaughtExceptionHandler, org.glassfish.grizzly.monitoring.MonitoringAware
{
private static final java.util.logging.Logger logger;
public static final int DEFAULT_MIN_THREAD_COUNT;
public static final int DEFAULT_MAX_THREAD_COUNT;
private static final java.lang.Long NEVER_TIMEOUT;
public static final int DEFAULT_MAX_TASKS_QUEUED;
public static final int DEFAULT_IDLE_THREAD_KEEPALIVE_TIMEOUT;
protected static final java.lang.Runnable poison;
protected final java.lang.Object stateLock;
protected final java.util.Map workers;
protected volatile boolean running;
protected final org.glassfish.grizzly.threadpool.ThreadPoolConfig config;
protected final long transactionTimeoutMillis;
protected final org.glassfish.grizzly.utils.DelayedExecutor$DelayQueue delayedQueue;
private static final org.glassfish.grizzly.utils.DelayedExecutor$Resolver transactionResolver;
protected final org.glassfish.grizzly.monitoring.DefaultMonitoringConfig monitoringConfig;
public void <init>(org.glassfish.grizzly.threadpool.ThreadPoolConfig)
{
org.glassfish.grizzly.utils.DelayedExecutor$DelayQueue v;
java.lang.Object[] v;
org.glassfish.grizzly.threadpool.AbstractThreadPool$3 v;
org.glassfish.grizzly.threadpool.AbstractThreadPool$4 v;
java.util.HashMap v;
long v, v;
org.glassfish.grizzly.threadpool.ThreadPoolConfig v;
org.glassfish.grizzly.monitoring.DefaultMonitoringConfig v, v, v;
byte v;
int v;
org.glassfish.grizzly.threadpool.AbstractThreadPool v;
org.glassfish.grizzly.utils.DelayedExecutor$Resolver v;
java.util.concurrent.ThreadFactory v, v;
boolean v;
org.glassfish.grizzly.utils.DelayedExecutor v;
java.lang.IllegalArgumentException v;
java.util.concurrent.TimeUnit v;
java.lang.Object v;
v := @this: org.glassfish.grizzly.threadpool.AbstractThreadPool;
v := @parameter: org.glassfish.grizzly.threadpool.ThreadPoolConfig;
specialinvoke v.<java.util.concurrent.AbstractExecutorService: void <init>()>();
v = new java.lang.Object;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: java.lang.Object stateLock> = v;
v = new java.util.HashMap;
specialinvoke v.<java.util.HashMap: void <init>()>();
v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: java.util.Map workers> = v;
v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: boolean running> = 1;
v = new org.glassfish.grizzly.threadpool.AbstractThreadPool$3;
specialinvoke v.<org.glassfish.grizzly.threadpool.AbstractThreadPool$3: void <init>(org.glassfish.grizzly.threadpool.AbstractThreadPool,java.lang.Class)>(v, class "Lorg/glassfish/grizzly/threadpool/ThreadPoolProbe;");
v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: org.glassfish.grizzly.monitoring.DefaultMonitoringConfig monitoringConfig> = v;
v = virtualinvoke v.<org.glassfish.grizzly.threadpool.ThreadPoolConfig: int getMaxPoolSize()>();
if v >= 1 goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("poolsize < 1");
throw v;
label:
v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: org.glassfish.grizzly.threadpool.ThreadPoolConfig config> = v;
v = virtualinvoke v.<org.glassfish.grizzly.threadpool.ThreadPoolConfig: org.glassfish.grizzly.monitoring.DefaultMonitoringConfig getInitialMonitoringConfig()>();
v = virtualinvoke v.<org.glassfish.grizzly.monitoring.DefaultMonitoringConfig: boolean hasProbes()>();
if v == 0 goto label;
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: org.glassfish.grizzly.monitoring.DefaultMonitoringConfig monitoringConfig>;
v = virtualinvoke v.<org.glassfish.grizzly.threadpool.ThreadPoolConfig: org.glassfish.grizzly.monitoring.DefaultMonitoringConfig getInitialMonitoringConfig()>();
v = virtualinvoke v.<org.glassfish.grizzly.monitoring.DefaultMonitoringConfig: java.lang.Object[] getProbes()>();
virtualinvoke v.<org.glassfish.grizzly.monitoring.DefaultMonitoringConfig: void addProbes(java.lang.Object[])>(v);
label:
v = virtualinvoke v.<org.glassfish.grizzly.threadpool.ThreadPoolConfig: java.util.concurrent.ThreadFactory getThreadFactory()>();
if v != null goto label;
v = virtualinvoke v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: java.util.concurrent.ThreadFactory getDefaultThreadFactory()>();
virtualinvoke v.<org.glassfish.grizzly.threadpool.ThreadPoolConfig: org.glassfish.grizzly.threadpool.ThreadPoolConfig setThreadFactory(java.util.concurrent.ThreadFactory)>(v);
label:
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit MILLISECONDS>;
v = virtualinvoke v.<org.glassfish.grizzly.threadpool.ThreadPoolConfig: long getTransactionTimeout(java.util.concurrent.TimeUnit)>(v);
v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: long transactionTimeoutMillis> = v;
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: long transactionTimeoutMillis>;
v = v cmp 0L;
if v <= 0 goto label;
v = virtualinvoke v.<org.glassfish.grizzly.threadpool.ThreadPoolConfig: org.glassfish.grizzly.utils.DelayedExecutor getTransactionMonitor()>();
goto label;
label:
v = null;
label:
if v == null goto label;
v = new org.glassfish.grizzly.threadpool.AbstractThreadPool$4;
specialinvoke v.<org.glassfish.grizzly.threadpool.AbstractThreadPool$4: void <init>(org.glassfish.grizzly.threadpool.AbstractThreadPool)>(v);
v = <org.glassfish.grizzly.threadpool.AbstractThreadPool: org.glassfish.grizzly.utils.DelayedExecutor$Resolver transactionResolver>;
v = virtualinvoke v.<org.glassfish.grizzly.utils.DelayedExecutor: org.glassfish.grizzly.utils.DelayedExecutor$DelayQueue createDelayQueue(org.glassfish.grizzly.utils.DelayedExecutor$Worker,org.glassfish.grizzly.utils.DelayedExecutor$Resolver)>(v, v);
v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: org.glassfish.grizzly.utils.DelayedExecutor$DelayQueue delayedQueue> = v;
goto label;
label:
v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: org.glassfish.grizzly.utils.DelayedExecutor$DelayQueue delayedQueue> = null;
label:
return;
}
protected void startWorker(org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker)
{
org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker v;
long v;
org.glassfish.grizzly.threadpool.ThreadPoolConfig v;
java.lang.Long v;
java.lang.Thread v, v;
java.util.Map v;
org.glassfish.grizzly.threadpool.AbstractThreadPool v;
java.util.concurrent.ThreadFactory v;
v := @this: org.glassfish.grizzly.threadpool.AbstractThreadPool;
v := @parameter: org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker;
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: org.glassfish.grizzly.threadpool.ThreadPoolConfig config>;
v = virtualinvoke v.<org.glassfish.grizzly.threadpool.ThreadPoolConfig: java.util.concurrent.ThreadFactory getThreadFactory()>();
v = interfaceinvoke v.<java.util.concurrent.ThreadFactory: java.lang.Thread newThread(java.lang.Runnable)>(v);
v.<org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker: java.lang.Thread t> = v;
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: java.util.Map workers>;
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker: java.lang.Thread t>;
virtualinvoke v.<java.lang.Thread: void start()>();
return;
}
public org.glassfish.grizzly.threadpool.ThreadPoolConfig getConfig()
{
org.glassfish.grizzly.threadpool.AbstractThreadPool v;
org.glassfish.grizzly.threadpool.ThreadPoolConfig v;
v := @this: org.glassfish.grizzly.threadpool.AbstractThreadPool;
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: org.glassfish.grizzly.threadpool.ThreadPoolConfig config>;
return v;
}
public java.util.Queue getQueue()
{
org.glassfish.grizzly.threadpool.AbstractThreadPool v;
java.util.Queue v;
org.glassfish.grizzly.threadpool.ThreadPoolConfig v;
v := @this: org.glassfish.grizzly.threadpool.AbstractThreadPool;
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: org.glassfish.grizzly.threadpool.ThreadPoolConfig config>;
v = virtualinvoke v.<org.glassfish.grizzly.threadpool.ThreadPoolConfig: java.util.Queue getQueue()>();
return v;
}
public final int getSize()
{
java.lang.Throwable v;
java.util.Map v;
int v;
java.lang.Object v;
org.glassfish.grizzly.threadpool.AbstractThreadPool v;
v := @this: org.glassfish.grizzly.threadpool.AbstractThreadPool;
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: java.lang.Object stateLock>;
entermonitor v;
label:
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: java.util.Map workers>;
v = interfaceinvoke v.<java.util.Map: int size()>();
exitmonitor v;
label:
return v;
label:
v := @caughtexception;
exitmonitor v;
throw v;
catch java.lang.Throwable from label to label with label;
}
public java.util.List shutdownNow()
{
java.lang.Throwable v;
java.util.Iterator v, v;
java.util.Set v;
java.util.ArrayList v;
java.lang.Thread v;
java.util.Map v;
java.lang.Object v, v, v;
org.glassfish.grizzly.threadpool.AbstractThreadPool v;
java.util.Queue v;
boolean v, v, v;
v := @this: org.glassfish.grizzly.threadpool.AbstractThreadPool;
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: java.lang.Object stateLock>;
entermonitor v;
label:
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: boolean running>;
if v == 0 goto label;
v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: boolean running> = 0;
v = virtualinvoke v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: java.util.Queue getQueue()>();
staticinvoke <org.glassfish.grizzly.threadpool.AbstractThreadPool: void drain(java.util.Queue,java.util.Collection)>(v, v);
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
virtualinvoke v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: void onTaskDequeued(java.lang.Runnable)>(v);
virtualinvoke v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: void onTaskCancelled(java.lang.Runnable)>(v);
goto label;
label:
virtualinvoke v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: void poisonAll()>();
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: java.util.Map workers>;
v = interfaceinvoke v.<java.util.Map: java.util.Set keySet()>();
v = interfaceinvoke v.<java.util.Set: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker: java.lang.Thread t>;
virtualinvoke v.<java.lang.Thread: void interrupt()>();
goto label;
label:
staticinvoke <org.glassfish.grizzly.threadpool.ProbeNotifier: void notifyThreadPoolStopped(org.glassfish.grizzly.threadpool.AbstractThreadPool)>(v);
label:
exitmonitor v;
label:
return v;
label:
v := @caughtexception;
exitmonitor v;
throw v;
catch java.lang.Throwable from label to label with label;
}
public void shutdown()
{
java.lang.Throwable v;
java.lang.Object v, v;
org.glassfish.grizzly.threadpool.AbstractThreadPool v;
boolean v;
v := @this: org.glassfish.grizzly.threadpool.AbstractThreadPool;
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: java.lang.Object stateLock>;
entermonitor v;
label:
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: boolean running>;
if v == 0 goto label;
v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: boolean running> = 0;
virtualinvoke v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: void poisonAll()>();
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: java.lang.Object stateLock>;
virtualinvoke v.<java.lang.Object: void notifyAll()>();
staticinvoke <org.glassfish.grizzly.threadpool.ProbeNotifier: void notifyThreadPoolStopped(org.glassfish.grizzly.threadpool.AbstractThreadPool)>(v);
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
public boolean isShutdown()
{
org.glassfish.grizzly.threadpool.AbstractThreadPool v;
boolean v, v;
v := @this: org.glassfish.grizzly.threadpool.AbstractThreadPool;
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: boolean running>;
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public boolean isTerminated()
{
java.lang.Throwable v;
java.util.Map v;
java.lang.Object v;
org.glassfish.grizzly.threadpool.AbstractThreadPool v;
boolean v, v, v;
v := @this: org.glassfish.grizzly.threadpool.AbstractThreadPool;
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: java.lang.Object stateLock>;
entermonitor v;
label:
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: boolean running>;
if v != 0 goto label;
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: java.util.Map workers>;
v = interfaceinvoke v.<java.util.Map: boolean isEmpty()>();
if v == 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
exitmonitor v;
label:
return v;
label:
v := @caughtexception;
exitmonitor v;
throw v;
catch java.lang.Throwable from label to label with label;
}
public boolean awaitTermination(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException
{
java.lang.Throwable v;
long v, v, v, v, v;
java.util.concurrent.TimeUnit v;
byte v;
java.lang.Object v, v;
org.glassfish.grizzly.threadpool.AbstractThreadPool v;
boolean v, v;
v := @this: org.glassfish.grizzly.threadpool.AbstractThreadPool;
v := @parameter: long;
v := @parameter: java.util.concurrent.TimeUnit;
v = virtualinvoke v.<java.util.concurrent.TimeUnit: long toMillis(long)>(v);
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = v + v;
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: java.lang.Object stateLock>;
entermonitor v;
label:
v = virtualinvoke v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: boolean isTerminated()>();
if v == 0 goto label;
exitmonitor v;
label:
return 1;
label:
v = v cmp 20L;
if v >= 0 goto label;
exitmonitor v;
label:
return 0;
label:
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: java.lang.Object stateLock>;
virtualinvoke v.<java.lang.Object: void wait(long)>(v);
v = virtualinvoke v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: boolean isTerminated()>();
if v == 0 goto label;
exitmonitor v;
label:
return 1;
label:
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = v - v;
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
protected void poisonAll()
{
java.lang.Runnable v;
org.glassfish.grizzly.threadpool.ThreadPoolConfig v;
java.util.Map v;
int v, v, v, v, v, v;
org.glassfish.grizzly.threadpool.AbstractThreadPool v;
java.util.Queue v;
v := @this: org.glassfish.grizzly.threadpool.AbstractThreadPool;
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: org.glassfish.grizzly.threadpool.ThreadPoolConfig config>;
v = virtualinvoke v.<org.glassfish.grizzly.threadpool.ThreadPoolConfig: int getMaxPoolSize()>();
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: java.util.Map workers>;
v = interfaceinvoke v.<java.util.Map: int size()>();
v = staticinvoke <java.lang.Math: int max(int,int)>(v, v);
v = v * 4;
v = v / 3;
v = virtualinvoke v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: java.util.Queue getQueue()>();
label:
v = v;
v = v - 1;
if v <= 0 goto label;
v = <org.glassfish.grizzly.threadpool.AbstractThreadPool: java.lang.Runnable poison>;
interfaceinvoke v.<java.util.Queue: boolean offer(java.lang.Object)>(v);
goto label;
label:
return;
}
protected static void drain(java.util.Queue, java.util.Collection)
{
java.util.Collection v;
java.lang.Object v;
java.util.Queue v;
java.lang.Runnable v;
boolean v, v;
v := @parameter: java.util.Queue;
v := @parameter: java.util.Collection;
v = 1;
label:
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Queue: java.lang.Object poll()>();
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
if v == 0 goto label;
v = <org.glassfish.grizzly.threadpool.AbstractThreadPool: java.lang.Runnable poison>;
if v == v goto label;
interfaceinvoke v.<java.util.Collection: boolean add(java.lang.Object)>(v);
goto label;
label:
return;
}
protected void validateNewPoolSize(int, int)
{
java.lang.IllegalArgumentException v, v, v;
int v, v;
org.glassfish.grizzly.threadpool.AbstractThreadPool v;
java.lang.String v, v, v;
v := @this: org.glassfish.grizzly.threadpool.AbstractThreadPool;
v := @parameter: int;
v := @parameter: int;
if v >= 1 goto label;
v = new java.lang.IllegalArgumentException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (int)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("maxPoolsize < 1 :\u0001");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
if v >= 1 goto label;
v = new java.lang.IllegalArgumentException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (int)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("corePoolsize < 1 :\u0001");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
if v <= v goto label;
v = new java.lang.IllegalArgumentException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (int,int)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("corePoolsize > maxPoolSize: \u > \u0001");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
return;
}
protected void beforeExecute(org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker, java.lang.Thread, java.lang.Runnable)
{
org.glassfish.grizzly.utils.DelayedExecutor$DelayQueue v;
org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker v;
long v, v, v;
java.lang.Runnable v;
org.glassfish.grizzly.threadpool.ThreadPoolConfig v;
java.lang.Thread v;
org.glassfish.grizzly.threadpool.AbstractThreadPool v;
java.lang.ClassLoader v;
v := @this: org.glassfish.grizzly.threadpool.AbstractThreadPool;
v := @parameter: org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker;
v := @parameter: java.lang.Thread;
v := @parameter: java.lang.Runnable;
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: org.glassfish.grizzly.utils.DelayedExecutor$DelayQueue delayedQueue>;
if v == null goto label;
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: long transactionTimeoutMillis>;
v = v + v;
v.<org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker: long transactionExpirationTime> = v;
label:
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: org.glassfish.grizzly.threadpool.ThreadPoolConfig config>;
v = virtualinvoke v.<org.glassfish.grizzly.threadpool.ThreadPoolConfig: java.lang.ClassLoader getInitialClassLoader()>();
if v == null goto label;
virtualinvoke v.<java.lang.Thread: void setContextClassLoader(java.lang.ClassLoader)>(v);
label:
return;
}
protected void afterExecute(org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker, java.lang.Thread, java.lang.Runnable, java.lang.Throwable)
{
java.lang.Throwable v;
org.glassfish.grizzly.utils.DelayedExecutor$DelayQueue v;
org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker v;
long v;
java.lang.Runnable v;
java.lang.Long v;
java.lang.Thread v;
org.glassfish.grizzly.threadpool.AbstractThreadPool v;
v := @this: org.glassfish.grizzly.threadpool.AbstractThreadPool;
v := @parameter: org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker;
v := @parameter: java.lang.Thread;
v := @parameter: java.lang.Runnable;
v := @parameter: java.lang.Throwable;
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: org.glassfish.grizzly.utils.DelayedExecutor$DelayQueue delayedQueue>;
if v == null goto label;
v = <org.glassfish.grizzly.threadpool.AbstractThreadPool: java.lang.Long NEVER_TIMEOUT>;
v = virtualinvoke v.<java.lang.Long: long longValue()>();
v.<org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker: long transactionExpirationTime> = v;
label:
return;
}
protected void onTaskCompletedEvent(java.lang.Runnable)
{
org.glassfish.grizzly.threadpool.AbstractThreadPool v;
java.lang.Runnable v;
v := @this: org.glassfish.grizzly.threadpool.AbstractThreadPool;
v := @parameter: java.lang.Runnable;
staticinvoke <org.glassfish.grizzly.threadpool.ProbeNotifier: void notifyTaskCompleted(org.glassfish.grizzly.threadpool.AbstractThreadPool,java.lang.Runnable)>(v, v);
return;
}
protected void onWorkerStarted(org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker)
{
org.glassfish.grizzly.utils.DelayedExecutor$DelayQueue v, v;
org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker v;
long v;
java.util.concurrent.TimeUnit v;
java.lang.Long v;
java.lang.Thread v;
org.glassfish.grizzly.threadpool.AbstractThreadPool v;
v := @this: org.glassfish.grizzly.threadpool.AbstractThreadPool;
v := @parameter: org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker;
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: org.glassfish.grizzly.utils.DelayedExecutor$DelayQueue delayedQueue>;
if v == null goto label;
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: org.glassfish.grizzly.utils.DelayedExecutor$DelayQueue delayedQueue>;
v = <org.glassfish.grizzly.threadpool.AbstractThreadPool: java.lang.Long NEVER_TIMEOUT>;
v = virtualinvoke v.<java.lang.Long: long longValue()>();
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit MILLISECONDS>;
virtualinvoke v.<org.glassfish.grizzly.utils.DelayedExecutor$DelayQueue: void add(java.lang.Object,long,java.util.concurrent.TimeUnit)>(v, v, v);
label:
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker: java.lang.Thread t>;
staticinvoke <org.glassfish.grizzly.threadpool.ProbeNotifier: void notifyThreadAllocated(org.glassfish.grizzly.threadpool.AbstractThreadPool,java.lang.Thread)>(v, v);
return;
}
protected void onWorkerExit(org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker)
{
java.lang.Throwable v;
org.glassfish.grizzly.utils.DelayedExecutor$DelayQueue v, v;
org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker v;
java.lang.Thread v;
java.util.Map v, v;
java.lang.Object v, v;
org.glassfish.grizzly.threadpool.AbstractThreadPool v;
boolean v;
v := @this: org.glassfish.grizzly.threadpool.AbstractThreadPool;
v := @parameter: org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker;
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: java.lang.Object stateLock>;
entermonitor v;
label:
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: java.util.Map workers>;
interfaceinvoke v.<java.util.Map: java.lang.Object remove(java.lang.Object)>(v);
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: org.glassfish.grizzly.utils.DelayedExecutor$DelayQueue delayedQueue>;
if v == null goto label;
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: org.glassfish.grizzly.utils.DelayedExecutor$DelayQueue delayedQueue>;
virtualinvoke v.<org.glassfish.grizzly.utils.DelayedExecutor$DelayQueue: void remove(java.lang.Object)>(v);
label:
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: java.util.Map workers>;
v = interfaceinvoke v.<java.util.Map: boolean isEmpty()>();
if v == 0 goto label;
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: java.lang.Object stateLock>;
virtualinvoke v.<java.lang.Object: void notifyAll()>();
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker: java.lang.Thread t>;
staticinvoke <org.glassfish.grizzly.threadpool.ProbeNotifier: void notifyThreadReleased(org.glassfish.grizzly.threadpool.AbstractThreadPool,java.lang.Thread)>(v, v);
return;
catch java.lang.Throwable from label to label with label;
}
protected void onMaxNumberOfThreadsReached()
{
int v;
org.glassfish.grizzly.threadpool.AbstractThreadPool v;
org.glassfish.grizzly.threadpool.ThreadPoolConfig v;
v := @this: org.glassfish.grizzly.threadpool.AbstractThreadPool;
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: org.glassfish.grizzly.threadpool.ThreadPoolConfig config>;
v = virtualinvoke v.<org.glassfish.grizzly.threadpool.ThreadPoolConfig: int getMaxPoolSize()>();
staticinvoke <org.glassfish.grizzly.threadpool.ProbeNotifier: void notifyMaxNumberOfThreads(org.glassfish.grizzly.threadpool.AbstractThreadPool,int)>(v, v);
return;
}
protected void onTaskQueued(java.lang.Runnable)
{
org.glassfish.grizzly.threadpool.AbstractThreadPool v;
java.lang.Runnable v;
v := @this: org.glassfish.grizzly.threadpool.AbstractThreadPool;
v := @parameter: java.lang.Runnable;
staticinvoke <org.glassfish.grizzly.threadpool.ProbeNotifier: void notifyTaskQueued(org.glassfish.grizzly.threadpool.AbstractThreadPool,java.lang.Runnable)>(v, v);
return;
}
protected void onTaskDequeued(java.lang.Runnable)
{
org.glassfish.grizzly.threadpool.AbstractThreadPool v;
java.lang.Runnable v;
v := @this: org.glassfish.grizzly.threadpool.AbstractThreadPool;
v := @parameter: java.lang.Runnable;
staticinvoke <org.glassfish.grizzly.threadpool.ProbeNotifier: void notifyTaskDequeued(org.glassfish.grizzly.threadpool.AbstractThreadPool,java.lang.Runnable)>(v, v);
return;
}
protected void onTaskCancelled(java.lang.Runnable)
{
org.glassfish.grizzly.threadpool.AbstractThreadPool v;
java.lang.Runnable v;
v := @this: org.glassfish.grizzly.threadpool.AbstractThreadPool;
v := @parameter: java.lang.Runnable;
staticinvoke <org.glassfish.grizzly.threadpool.ProbeNotifier: void notifyTaskCancelled(org.glassfish.grizzly.threadpool.AbstractThreadPool,java.lang.Runnable)>(v, v);
return;
}
protected void onTaskQueueOverflow()
{
java.util.concurrent.RejectedExecutionException v;
int v;
org.glassfish.grizzly.threadpool.AbstractThreadPool v;
java.lang.String v;
org.glassfish.grizzly.threadpool.ThreadPoolConfig v;
v := @this: org.glassfish.grizzly.threadpool.AbstractThreadPool;
staticinvoke <org.glassfish.grizzly.threadpool.ProbeNotifier: void notifyTaskQueueOverflow(org.glassfish.grizzly.threadpool.AbstractThreadPool)>(v);
v = new java.util.concurrent.RejectedExecutionException;
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: org.glassfish.grizzly.threadpool.ThreadPoolConfig config>;
v = virtualinvoke v.<org.glassfish.grizzly.threadpool.ThreadPoolConfig: int getQueueLimit()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (int)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("The thread pool\'s task queue is full, limit: \u0001");
specialinvoke v.<java.util.concurrent.RejectedExecutionException: void <init>(java.lang.String)>(v);
throw v;
}
public org.glassfish.grizzly.monitoring.MonitoringConfig getMonitoringConfig()
{
org.glassfish.grizzly.monitoring.DefaultMonitoringConfig v;
org.glassfish.grizzly.threadpool.AbstractThreadPool v;
v := @this: org.glassfish.grizzly.threadpool.AbstractThreadPool;
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: org.glassfish.grizzly.monitoring.DefaultMonitoringConfig monitoringConfig>;
return v;
}
public void uncaughtException(java.lang.Thread, java.lang.Throwable)
{
java.lang.Throwable v;
java.lang.Thread v;
org.glassfish.grizzly.threadpool.AbstractThreadPool v;
java.lang.String v;
java.util.logging.Logger v;
java.util.logging.Level v;
v := @this: org.glassfish.grizzly.threadpool.AbstractThreadPool;
v := @parameter: java.lang.Thread;
v := @parameter: java.lang.Throwable;
v = <org.glassfish.grizzly.threadpool.AbstractThreadPool: java.util.logging.Logger logger>;
v = <java.util.logging.Level: java.util.logging.Level WARNING>;
v = staticinvoke <org.glassfish.grizzly.localization.LogMessages: java.lang.String WARNING_GRIZZLY_THREADPOOL_UNCAUGHT_EXCEPTION(java.lang.Object)>(v);
virtualinvoke v.<java.util.logging.Logger: void log(java.util.logging.Level,java.lang.String,java.lang.Throwable)>(v, v, v);
return;
}
java.lang.Object createJmxManagementObject()
{
java.lang.Object v;
org.glassfish.grizzly.threadpool.AbstractThreadPool v;
v := @this: org.glassfish.grizzly.threadpool.AbstractThreadPool;
v = staticinvoke <org.glassfish.grizzly.monitoring.MonitoringUtils: java.lang.Object loadJmxObject(java.lang.String,java.lang.Object,java.lang.Class)>("org.glassfish.grizzly.threadpool.jmx.ThreadPool", v, class "Lorg/glassfish/grizzly/threadpool/AbstractThreadPool;");
return v;
}
protected final java.util.concurrent.ThreadFactory getDefaultThreadFactory()
{
org.glassfish.grizzly.threadpool.AbstractThreadPool v;
org.glassfish.grizzly.threadpool.AbstractThreadPool$5 v;
java.util.concurrent.atomic.AtomicInteger v;
v := @this: org.glassfish.grizzly.threadpool.AbstractThreadPool;
v = new java.util.concurrent.atomic.AtomicInteger;
specialinvoke v.<java.util.concurrent.atomic.AtomicInteger: void <init>()>();
v = new org.glassfish.grizzly.threadpool.AbstractThreadPool$5;
specialinvoke v.<org.glassfish.grizzly.threadpool.AbstractThreadPool$5: void <init>(org.glassfish.grizzly.threadpool.AbstractThreadPool,java.util.concurrent.atomic.AtomicInteger)>(v, v);
return v;
}
public java.lang.String toString()
{
org.glassfish.grizzly.threadpool.ThreadPoolConfig v;
java.lang.Class v;
java.lang.StringBuilder v, v, v, v;
org.glassfish.grizzly.threadpool.AbstractThreadPool v;
java.lang.String v, v, v;
boolean v;
v := @this: org.glassfish.grizzly.threadpool.AbstractThreadPool;
v = new java.lang.StringBuilder;
specialinvoke v.<java.lang.StringBuilder: void <init>(int)>(256);
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getSimpleName()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(" config: [");
v = v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: org.glassfish.grizzly.threadpool.ThreadPoolConfig config>;
v = virtualinvoke v.<org.glassfish.grizzly.threadpool.ThreadPoolConfig: java.lang.String toString()>();
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("]\r\n");
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(", is-shutdown=");
v = virtualinvoke v.<org.glassfish.grizzly.threadpool.AbstractThreadPool: boolean isShutdown()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(boolean)>(v);
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.String toString()>();
return v;
}
static void <clinit>()
{
java.lang.Long v;
java.lang.Runtime v;
int v, v;
org.glassfish.grizzly.threadpool.AbstractThreadPool$1 v;
org.glassfish.grizzly.threadpool.AbstractThreadPool$2 v;
java.util.logging.Logger v;
v = staticinvoke <org.glassfish.grizzly.Grizzly: java.util.logging.Logger logger(java.lang.Class)>(class "Lorg/glassfish/grizzly/threadpool/AbstractThreadPool;");
<org.glassfish.grizzly.threadpool.AbstractThreadPool: java.util.logging.Logger logger> = v;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(9223372036854775807L);
<org.glassfish.grizzly.threadpool.AbstractThreadPool: java.lang.Long NEVER_TIMEOUT> = v;
v = staticinvoke <java.lang.Runtime: java.lang.Runtime getRuntime()>();
v = virtualinvoke v.<java.lang.Runtime: int availableProcessors()>();
if v <= 5 goto label;
v = v;
goto label;
label:
v = 5;
label:
<org.glassfish.grizzly.threadpool.AbstractThreadPool: int DEFAULT_MIN_THREAD_COUNT> = v;
<org.glassfish.grizzly.threadpool.AbstractThreadPool: int DEFAULT_MAX_THREAD_COUNT> = 2147483647;
v = new org.glassfish.grizzly.threadpool.AbstractThreadPool$1;
specialinvoke v.<org.glassfish.grizzly.threadpool.AbstractThreadPool$1: void <init>()>();
<org.glassfish.grizzly.threadpool.AbstractThreadPool: java.lang.Runnable poison> = v;
v = new org.glassfish.grizzly.threadpool.AbstractThreadPool$2;
specialinvoke v.<org.glassfish.grizzly.threadpool.AbstractThreadPool$2: void <init>()>();
<org.glassfish.grizzly.threadpool.AbstractThreadPool: org.glassfish.grizzly.utils.DelayedExecutor$Resolver transactionResolver> = v;
return;
}
}