public class org.apache.commons.lang3.concurrent.TimedSemaphore
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.apache.commons.lang3.concurrent.TimedSemaphore
super_class: java.lang.Object
{
public static final int NO_LIMIT;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 0
private static final int THREAD_POOL_SIZE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1
private final java.util.concurrent.ScheduledExecutorService executorService;
descriptor: Ljava/util/concurrent/ScheduledExecutorService;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final long period;
descriptor: J
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.concurrent.TimeUnit unit;
descriptor: Ljava/util/concurrent/TimeUnit;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final boolean ownExecutor;
descriptor: Z
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private java.util.concurrent.ScheduledFuture<?> task;
descriptor: Ljava/util/concurrent/ScheduledFuture;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/concurrent/ScheduledFuture<*>;
private long totalAcquireCount;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private long periodCount;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private int limit;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private int acquireCount;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private int lastCallsPerPeriod;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private boolean shutdown;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
public void <init>(long, java.util.concurrent.TimeUnit, int);
descriptor: (JLjava/util/concurrent/TimeUnit;I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=5, args_size=4
start local 0 start local 1 start local 3 start local 4 0: aload 0
aconst_null
lload 1
aload 3
iload 4
invokespecial org.apache.commons.lang3.concurrent.TimedSemaphore.<init>:(Ljava/util/concurrent/ScheduledExecutorService;JLjava/util/concurrent/TimeUnit;I)V
1: return
end local 4 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/apache/commons/lang3/concurrent/TimedSemaphore;
0 2 1 timePeriod J
0 2 3 timeUnit Ljava/util/concurrent/TimeUnit;
0 2 4 limit I
MethodParameters:
Name Flags
timePeriod final
timeUnit final
limit final
public void <init>(java.util.concurrent.ScheduledExecutorService, long, java.util.concurrent.TimeUnit, int);
descriptor: (Ljava/util/concurrent/ScheduledExecutorService;JLjava/util/concurrent/TimeUnit;I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=7, args_size=5
start local 0 start local 1 start local 2 start local 4 start local 5 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: lconst_1
ldc 9223372036854775807
lload 2
ldc "Time period must be greater than 0!"
invokestatic org.apache.commons.lang3.Validate.inclusiveBetween:(JJJLjava/lang/String;)V
2: aload 0
lload 2
putfield org.apache.commons.lang3.concurrent.TimedSemaphore.period:J
3: aload 0
aload 4
putfield org.apache.commons.lang3.concurrent.TimedSemaphore.unit:Ljava/util/concurrent/TimeUnit;
4: aload 1
ifnull 8
5: aload 0
aload 1
putfield org.apache.commons.lang3.concurrent.TimedSemaphore.executorService:Ljava/util/concurrent/ScheduledExecutorService;
6: aload 0
iconst_0
putfield org.apache.commons.lang3.concurrent.TimedSemaphore.ownExecutor:Z
7: goto 15
8: StackMap locals: org.apache.commons.lang3.concurrent.TimedSemaphore java.util.concurrent.ScheduledExecutorService long java.util.concurrent.TimeUnit int
StackMap stack:
new java.util.concurrent.ScheduledThreadPoolExecutor
dup
9: iconst_1
10: invokespecial java.util.concurrent.ScheduledThreadPoolExecutor.<init>:(I)V
astore 6
start local 6 11: aload 6
iconst_0
invokevirtual java.util.concurrent.ScheduledThreadPoolExecutor.setContinueExistingPeriodicTasksAfterShutdownPolicy:(Z)V
12: aload 6
iconst_0
invokevirtual java.util.concurrent.ScheduledThreadPoolExecutor.setExecuteExistingDelayedTasksAfterShutdownPolicy:(Z)V
13: aload 0
aload 6
putfield org.apache.commons.lang3.concurrent.TimedSemaphore.executorService:Ljava/util/concurrent/ScheduledExecutorService;
14: aload 0
iconst_1
putfield org.apache.commons.lang3.concurrent.TimedSemaphore.ownExecutor:Z
end local 6 15: StackMap locals:
StackMap stack:
aload 0
iload 5
invokevirtual org.apache.commons.lang3.concurrent.TimedSemaphore.setLimit:(I)V
16: return
end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Lorg/apache/commons/lang3/concurrent/TimedSemaphore;
0 17 1 service Ljava/util/concurrent/ScheduledExecutorService;
0 17 2 timePeriod J
0 17 4 timeUnit Ljava/util/concurrent/TimeUnit;
0 17 5 limit I
11 15 6 s Ljava/util/concurrent/ScheduledThreadPoolExecutor;
MethodParameters:
Name Flags
service final
timePeriod final
timeUnit final
limit final
public final synchronized int getLimit();
descriptor: ()I
flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SYNCHRONIZED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.commons.lang3.concurrent.TimedSemaphore.limit:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/commons/lang3/concurrent/TimedSemaphore;
public final synchronized void setLimit(int);
descriptor: (I)V
flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SYNCHRONIZED
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iload 1
putfield org.apache.commons.lang3.concurrent.TimedSemaphore.limit:I
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/apache/commons/lang3/concurrent/TimedSemaphore;
0 2 1 limit I
MethodParameters:
Name Flags
limit final
public synchronized void shutdown();
descriptor: ()V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.commons.lang3.concurrent.TimedSemaphore.shutdown:Z
ifne 6
1: aload 0
getfield org.apache.commons.lang3.concurrent.TimedSemaphore.ownExecutor:Z
ifeq 3
2: aload 0
invokevirtual org.apache.commons.lang3.concurrent.TimedSemaphore.getExecutorService:()Ljava/util/concurrent/ScheduledExecutorService;
invokeinterface java.util.concurrent.ScheduledExecutorService.shutdownNow:()Ljava/util/List;
pop
3: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.commons.lang3.concurrent.TimedSemaphore.task:Ljava/util/concurrent/ScheduledFuture;
ifnull 5
4: aload 0
getfield org.apache.commons.lang3.concurrent.TimedSemaphore.task:Ljava/util/concurrent/ScheduledFuture;
iconst_0
invokeinterface java.util.concurrent.ScheduledFuture.cancel:(Z)Z
pop
5: StackMap locals:
StackMap stack:
aload 0
iconst_1
putfield org.apache.commons.lang3.concurrent.TimedSemaphore.shutdown:Z
6: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/apache/commons/lang3/concurrent/TimedSemaphore;
public synchronized boolean isShutdown();
descriptor: ()Z
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.commons.lang3.concurrent.TimedSemaphore.shutdown:Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/commons/lang3/concurrent/TimedSemaphore;
public synchronized void acquire();
descriptor: ()V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=1, locals=2, args_size=1
start local 0 0: aload 0
invokevirtual org.apache.commons.lang3.concurrent.TimedSemaphore.prepareAcquire:()V
1: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.apache.commons.lang3.concurrent.TimedSemaphore.acquirePermit:()Z
istore 1
start local 1 2: iload 1
ifne 4
3: aload 0
invokevirtual java.lang.Object.wait:()V
4: StackMap locals: int
StackMap stack:
iload 1
ifeq 1
5: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/apache/commons/lang3/concurrent/TimedSemaphore;
2 6 1 canPass Z
Exceptions:
throws java.lang.InterruptedException
public synchronized boolean tryAcquire();
descriptor: ()Z
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual org.apache.commons.lang3.concurrent.TimedSemaphore.prepareAcquire:()V
1: aload 0
invokevirtual org.apache.commons.lang3.concurrent.TimedSemaphore.acquirePermit:()Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/apache/commons/lang3/concurrent/TimedSemaphore;
public synchronized int getLastAcquiresPerPeriod();
descriptor: ()I
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.commons.lang3.concurrent.TimedSemaphore.lastCallsPerPeriod:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/commons/lang3/concurrent/TimedSemaphore;
public synchronized int getAcquireCount();
descriptor: ()I
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.commons.lang3.concurrent.TimedSemaphore.acquireCount:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/commons/lang3/concurrent/TimedSemaphore;
public synchronized int getAvailablePermits();
descriptor: ()I
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual org.apache.commons.lang3.concurrent.TimedSemaphore.getLimit:()I
aload 0
invokevirtual org.apache.commons.lang3.concurrent.TimedSemaphore.getAcquireCount:()I
isub
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/commons/lang3/concurrent/TimedSemaphore;
public synchronized double getAverageCallsPerPeriod();
descriptor: ()D
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.commons.lang3.concurrent.TimedSemaphore.periodCount:J
lconst_0
lcmp
ifne 1
dconst_0
goto 3
StackMap locals:
StackMap stack:
1: aload 0
getfield org.apache.commons.lang3.concurrent.TimedSemaphore.totalAcquireCount:J
l2d
2: aload 0
getfield org.apache.commons.lang3.concurrent.TimedSemaphore.periodCount:J
l2d
ddiv
3: StackMap locals:
StackMap stack: double
dreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/apache/commons/lang3/concurrent/TimedSemaphore;
public long getPeriod();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.commons.lang3.concurrent.TimedSemaphore.period:J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/commons/lang3/concurrent/TimedSemaphore;
public java.util.concurrent.TimeUnit getUnit();
descriptor: ()Ljava/util/concurrent/TimeUnit;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.commons.lang3.concurrent.TimedSemaphore.unit:Ljava/util/concurrent/TimeUnit;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/commons/lang3/concurrent/TimedSemaphore;
protected java.util.concurrent.ScheduledExecutorService getExecutorService();
descriptor: ()Ljava/util/concurrent/ScheduledExecutorService;
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.commons.lang3.concurrent.TimedSemaphore.executorService:Ljava/util/concurrent/ScheduledExecutorService;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/commons/lang3/concurrent/TimedSemaphore;
protected java.util.concurrent.ScheduledFuture<?> startTimer();
descriptor: ()Ljava/util/concurrent/ScheduledFuture;
flags: (0x0004) ACC_PROTECTED
Code:
stack=7, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual org.apache.commons.lang3.concurrent.TimedSemaphore.getExecutorService:()Ljava/util/concurrent/ScheduledExecutorService;
new org.apache.commons.lang3.concurrent.TimedSemaphore$1
dup
aload 0
invokespecial org.apache.commons.lang3.concurrent.TimedSemaphore$1.<init>:(Lorg/apache/commons/lang3/concurrent/TimedSemaphore;)V
1: aload 0
invokevirtual org.apache.commons.lang3.concurrent.TimedSemaphore.getPeriod:()J
aload 0
invokevirtual org.apache.commons.lang3.concurrent.TimedSemaphore.getPeriod:()J
aload 0
invokevirtual org.apache.commons.lang3.concurrent.TimedSemaphore.getUnit:()Ljava/util/concurrent/TimeUnit;
2: invokeinterface java.util.concurrent.ScheduledExecutorService.scheduleAtFixedRate:(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/apache/commons/lang3/concurrent/TimedSemaphore;
Signature: ()Ljava/util/concurrent/ScheduledFuture<*>;
synchronized void endOfPeriod();
descriptor: ()V
flags: (0x0020) ACC_SYNCHRONIZED
Code:
stack=5, locals=1, args_size=1
start local 0 0: aload 0
aload 0
getfield org.apache.commons.lang3.concurrent.TimedSemaphore.acquireCount:I
putfield org.apache.commons.lang3.concurrent.TimedSemaphore.lastCallsPerPeriod:I
1: aload 0
dup
getfield org.apache.commons.lang3.concurrent.TimedSemaphore.totalAcquireCount:J
aload 0
getfield org.apache.commons.lang3.concurrent.TimedSemaphore.acquireCount:I
i2l
ladd
putfield org.apache.commons.lang3.concurrent.TimedSemaphore.totalAcquireCount:J
2: aload 0
dup
getfield org.apache.commons.lang3.concurrent.TimedSemaphore.periodCount:J
lconst_1
ladd
putfield org.apache.commons.lang3.concurrent.TimedSemaphore.periodCount:J
3: aload 0
iconst_0
putfield org.apache.commons.lang3.concurrent.TimedSemaphore.acquireCount:I
4: aload 0
invokevirtual java.lang.Object.notifyAll:()V
5: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/apache/commons/lang3/concurrent/TimedSemaphore;
private void prepareAcquire();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual org.apache.commons.lang3.concurrent.TimedSemaphore.isShutdown:()Z
ifeq 2
1: new java.lang.IllegalStateException
dup
ldc "TimedSemaphore is shut down!"
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.commons.lang3.concurrent.TimedSemaphore.task:Ljava/util/concurrent/ScheduledFuture;
ifnonnull 4
3: aload 0
aload 0
invokevirtual org.apache.commons.lang3.concurrent.TimedSemaphore.startTimer:()Ljava/util/concurrent/ScheduledFuture;
putfield org.apache.commons.lang3.concurrent.TimedSemaphore.task:Ljava/util/concurrent/ScheduledFuture;
4: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/apache/commons/lang3/concurrent/TimedSemaphore;
private boolean acquirePermit();
descriptor: ()Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual org.apache.commons.lang3.concurrent.TimedSemaphore.getLimit:()I
ifle 1
aload 0
getfield org.apache.commons.lang3.concurrent.TimedSemaphore.acquireCount:I
aload 0
invokevirtual org.apache.commons.lang3.concurrent.TimedSemaphore.getLimit:()I
if_icmpge 3
1: StackMap locals:
StackMap stack:
aload 0
dup
getfield org.apache.commons.lang3.concurrent.TimedSemaphore.acquireCount:I
iconst_1
iadd
putfield org.apache.commons.lang3.concurrent.TimedSemaphore.acquireCount:I
2: iconst_1
ireturn
3: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/apache/commons/lang3/concurrent/TimedSemaphore;
}
SourceFile: "TimedSemaphore.java"
NestMembers:
org.apache.commons.lang3.concurrent.TimedSemaphore$1
InnerClasses:
org.apache.commons.lang3.concurrent.TimedSemaphore$1