public final class com.mchange.v2.c3p0.test.ConnectionDispersionTest
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: com.mchange.v2.c3p0.test.ConnectionDispersionTest
super_class: java.lang.Object
{
private static final int DELAY_TIME;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 120000
private static final int NUM_THREADS;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 600
private static final java.lang.Integer ZERO;
descriptor: Ljava/lang/Integer;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static boolean should_go;
descriptor: Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private static javax.sql.DataSource cpds;
descriptor: Ljavax/sql/DataSource;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private static int ready_count;
descriptor: I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=0, args_size=0
0: new java.lang.Integer
dup
iconst_0
invokespecial java.lang.Integer.<init>:(I)V
putstatic com.mchange.v2.c3p0.test.ConnectionDispersionTest.ZERO:Ljava/lang/Integer;
1: iconst_0
putstatic com.mchange.v2.c3p0.test.ConnectionDispersionTest.should_go:Z
2: iconst_0
putstatic com.mchange.v2.c3p0.test.ConnectionDispersionTest.ready_count:I
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/mchange/v2/c3p0/test/ConnectionDispersionTest;
private static synchronized void setDataSource(javax.sql.DataSource);
descriptor: (Ljavax/sql/DataSource;)V
flags: (0x002a) ACC_PRIVATE, ACC_STATIC, ACC_SYNCHRONIZED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
putstatic com.mchange.v2.c3p0.test.ConnectionDispersionTest.cpds:Ljavax/sql/DataSource;
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 ds Ljavax/sql/DataSource;
MethodParameters:
Name Flags
ds
private static synchronized javax.sql.DataSource getDataSource();
descriptor: ()Ljavax/sql/DataSource;
flags: (0x002a) ACC_PRIVATE, ACC_STATIC, ACC_SYNCHRONIZED
Code:
stack=1, locals=0, args_size=0
0: getstatic com.mchange.v2.c3p0.test.ConnectionDispersionTest.cpds:Ljavax/sql/DataSource;
areturn
LocalVariableTable:
Start End Slot Name Signature
private static synchronized int ready();
descriptor: ()I
flags: (0x002a) ACC_PRIVATE, ACC_STATIC, ACC_SYNCHRONIZED
Code:
stack=2, locals=0, args_size=0
0: getstatic com.mchange.v2.c3p0.test.ConnectionDispersionTest.ready_count:I
iconst_1
iadd
dup
putstatic com.mchange.v2.c3p0.test.ConnectionDispersionTest.ready_count:I
ireturn
LocalVariableTable:
Start End Slot Name Signature
private static synchronized boolean isReady();
descriptor: ()Z
flags: (0x002a) ACC_PRIVATE, ACC_STATIC, ACC_SYNCHRONIZED
Code:
stack=2, locals=0, args_size=0
0: getstatic com.mchange.v2.c3p0.test.ConnectionDispersionTest.ready_count:I
sipush 600
if_icmpne 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
LocalVariableTable:
Start End Slot Name Signature
private static synchronized void start();
descriptor: ()V
flags: (0x002a) ACC_PRIVATE, ACC_STATIC, ACC_SYNCHRONIZED
Code:
stack=1, locals=0, args_size=0
0: iconst_1
putstatic com.mchange.v2.c3p0.test.ConnectionDispersionTest.should_go:Z
1: ldc Lcom/mchange/v2/c3p0/test/ConnectionDispersionTest;
invokevirtual java.lang.Object.notifyAll:()V
2: return
LocalVariableTable:
Start End Slot Name Signature
private static synchronized void stop();
descriptor: ()V
flags: (0x002a) ACC_PRIVATE, ACC_STATIC, ACC_SYNCHRONIZED
Code:
stack=1, locals=0, args_size=0
0: iconst_0
putstatic com.mchange.v2.c3p0.test.ConnectionDispersionTest.should_go:Z
1: ldc Lcom/mchange/v2/c3p0/test/ConnectionDispersionTest;
invokevirtual java.lang.Object.notifyAll:()V
2: return
LocalVariableTable:
Start End Slot Name Signature
private static synchronized boolean shouldGo();
descriptor: ()Z
flags: (0x002a) ACC_PRIVATE, ACC_STATIC, ACC_SYNCHRONIZED
Code:
stack=1, locals=0, args_size=0
0: getstatic com.mchange.v2.c3p0.test.ConnectionDispersionTest.should_go:Z
ireturn
LocalVariableTable:
Start End Slot Name Signature
public static void main(java.lang.String[]);
descriptor: ([Ljava/lang/String;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=14, args_size=1
start local 0 0: aconst_null
astore 1
start local 1 1: aconst_null
astore 2
start local 2 2: aconst_null
astore 3
start local 3 3: aload 0
arraylength
iconst_3
if_icmpne 8
4: aload 0
iconst_0
aaload
astore 1
5: aload 0
iconst_1
aaload
astore 2
6: aload 0
iconst_2
aaload
astore 3
7: goto 14
8: StackMap locals: java.lang.String java.lang.String java.lang.String
StackMap stack:
aload 0
arraylength
iconst_1
if_icmpne 13
9: aload 0
iconst_0
aaload
astore 1
10: aconst_null
astore 2
11: aconst_null
astore 3
12: goto 14
13: StackMap locals:
StackMap stack:
invokestatic com.mchange.v2.c3p0.test.ConnectionDispersionTest.usage:()V
14: StackMap locals:
StackMap stack:
aload 1
ldc "jdbc:"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifne 16
15: invokestatic com.mchange.v2.c3p0.test.ConnectionDispersionTest.usage:()V
16: StackMap locals:
StackMap stack:
new com.mchange.v2.c3p0.ComboPooledDataSource
dup
invokespecial com.mchange.v2.c3p0.ComboPooledDataSource.<init>:()V
astore 4
start local 4 17: aload 4
aload 1
invokevirtual com.mchange.v2.c3p0.ComboPooledDataSource.setJdbcUrl:(Ljava/lang/String;)V
18: aload 4
aload 2
invokevirtual com.mchange.v2.c3p0.ComboPooledDataSource.setUser:(Ljava/lang/String;)V
19: aload 4
aload 3
invokevirtual com.mchange.v2.c3p0.ComboPooledDataSource.setPassword:(Ljava/lang/String;)V
20: aload 4
invokestatic com.mchange.v2.c3p0.test.ConnectionDispersionTest.setDataSource:(Ljavax/sql/DataSource;)V
21: aload 4
invokevirtual com.mchange.v2.c3p0.ComboPooledDataSource.getConnection:()Ljava/sql/Connection;
invokeinterface java.sql.Connection.close:()V
22: getstatic java.lang.System.err:Ljava/io/PrintStream;
ldc "Generating thread list..."
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
23: new java.util.ArrayList
dup
sipush 600
invokespecial java.util.ArrayList.<init>:(I)V
astore 5
start local 5 24: iconst_0
istore 6
start local 6 25: goto 31
26: StackMap locals: com.mchange.v2.c3p0.ComboPooledDataSource java.util.List int
StackMap stack:
new com.mchange.v2.c3p0.test.ConnectionDispersionTest$CompeteThread
dup
invokespecial com.mchange.v2.c3p0.test.ConnectionDispersionTest$CompeteThread.<init>:()V
astore 7
start local 7 27: aload 7
invokevirtual java.lang.Thread.start:()V
28: aload 5
aload 7
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
29: invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
pop
invokestatic java.lang.Thread.yield:()V
end local 7 30: iinc 6 1
StackMap locals:
StackMap stack:
31: iload 6
sipush 600
if_icmplt 26
end local 6 32: getstatic java.lang.System.err:Ljava/io/PrintStream;
ldc "Thread list generated."
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
33: ldc Lcom/mchange/v2/c3p0/test/ConnectionDispersionTest;
dup
astore 6
monitorenter
34: goto 36
StackMap locals: java.lang.String[] java.lang.String java.lang.String java.lang.String com.mchange.v2.c3p0.ComboPooledDataSource java.util.List java.lang.Class
StackMap stack:
35: ldc Lcom/mchange/v2/c3p0/test/ConnectionDispersionTest;
invokevirtual java.lang.Object.wait:()V
StackMap locals:
StackMap stack:
36: invokestatic com.mchange.v2.c3p0.test.ConnectionDispersionTest.isReady:()Z
ifeq 35
37: aload 6
monitorexit
38: goto 41
StackMap locals:
StackMap stack: java.lang.Throwable
39: aload 6
monitorexit
40: athrow
41: StackMap locals:
StackMap stack:
getstatic java.lang.System.err:Ljava/io/PrintStream;
ldc "Starting the race."
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
42: invokestatic com.mchange.v2.c3p0.test.ConnectionDispersionTest.start:()V
43: getstatic java.lang.System.err:Ljava/io/PrintStream;
ldc "Sleeping 120.0 seconds to let the race run"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
44: ldc 120000
invokestatic java.lang.Thread.sleep:(J)V
45: getstatic java.lang.System.err:Ljava/io/PrintStream;
ldc "Stopping the race."
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
46: invokestatic com.mchange.v2.c3p0.test.ConnectionDispersionTest.stop:()V
47: getstatic java.lang.System.err:Ljava/io/PrintStream;
ldc "Waiting for Threads to complete."
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
48: iconst_0
istore 6
start local 6 49: goto 52
50: StackMap locals: int
StackMap stack:
aload 5
iload 6
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast java.lang.Thread
invokevirtual java.lang.Thread.join:()V
51: iinc 6 1
StackMap locals:
StackMap stack:
52: iload 6
sipush 600
if_icmplt 50
end local 6 53: new java.util.TreeMap
dup
invokespecial java.util.TreeMap.<init>:()V
astore 6
start local 6 54: iconst_0
istore 7
start local 7 55: goto 62
56: StackMap locals: java.lang.String[] java.lang.String java.lang.String java.lang.String com.mchange.v2.c3p0.ComboPooledDataSource java.util.List java.util.Map int
StackMap stack:
new java.lang.Integer
dup
aload 5
iload 7
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast com.mchange.v2.c3p0.test.ConnectionDispersionTest$CompeteThread
invokevirtual com.mchange.v2.c3p0.test.ConnectionDispersionTest$CompeteThread.getCount:()I
invokespecial java.lang.Integer.<init>:(I)V
astore 8
start local 8 57: aload 6
aload 8
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Integer
astore 9
start local 9 58: aload 9
ifnonnull 60
59: getstatic com.mchange.v2.c3p0.test.ConnectionDispersionTest.ZERO:Ljava/lang/Integer;
astore 9
60: StackMap locals: java.lang.Integer java.lang.Integer
StackMap stack:
aload 6
aload 8
new java.lang.Integer
dup
aload 9
invokevirtual java.lang.Integer.intValue:()I
iconst_1
iadd
invokespecial java.lang.Integer.<init>:(I)V
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 9 end local 8 61: iinc 7 1
StackMap locals:
StackMap stack:
62: iload 7
sipush 600
if_icmplt 56
end local 7 63: iconst_0
istore 7
start local 7 64: aload 6
invokeinterface java.util.Map.keySet:()Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 8
start local 8 65: goto 82
66: StackMap locals: java.util.Iterator
StackMap stack:
aload 8
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.Integer
astore 9
start local 9 67: aload 6
aload 9
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Integer
astore 10
start local 10 68: aload 9
invokevirtual java.lang.Integer.intValue:()I
istore 11
start local 11 69: aload 10
invokevirtual java.lang.Integer.intValue:()I
istore 12
start local 12 70: goto 73
71: StackMap locals: java.lang.String[] java.lang.String java.lang.String java.lang.String com.mchange.v2.c3p0.ComboPooledDataSource java.util.List java.util.Map int java.util.Iterator java.lang.Integer java.lang.Integer int int
StackMap stack:
getstatic java.lang.System.out:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
sipush 10000
iload 7
iadd
invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
iconst_1
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc ": "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
72: iinc 7 1
StackMap locals:
StackMap stack:
73: iload 7
iload 11
if_icmplt 71
74: iinc 7 1
75: getstatic java.lang.System.out:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
sipush 10000
iload 11
iadd
invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
iconst_1
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc ": "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
76: iconst_0
istore 13
start local 13 77: goto 80
78: StackMap locals: int
StackMap stack:
getstatic java.lang.System.out:Ljava/io/PrintStream;
bipush 42
invokevirtual java.io.PrintStream.print:(C)V
79: iinc 13 1
StackMap locals:
StackMap stack:
80: iload 13
iload 12
if_icmplt 78
end local 13 81: getstatic java.lang.System.out:Ljava/io/PrintStream;
invokevirtual java.io.PrintStream.println:()V
end local 12 end local 11 end local 10 end local 9 82: StackMap locals: java.lang.String[] java.lang.String java.lang.String java.lang.String com.mchange.v2.c3p0.ComboPooledDataSource java.util.List java.util.Map int java.util.Iterator
StackMap stack:
aload 8
invokeinterface java.util.Iterator.hasNext:()Z
ifne 66
end local 8 end local 7 end local 6 end local 5 end local 4 83: goto 86
84: StackMap locals: java.lang.String[] java.lang.String java.lang.String java.lang.String
StackMap stack: java.lang.Exception
astore 4
start local 4 85: aload 4
invokevirtual java.lang.Exception.printStackTrace:()V
end local 4 86: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 87 0 argv [Ljava/lang/String;
1 87 1 jdbc_url Ljava/lang/String;
2 87 2 username Ljava/lang/String;
3 87 3 password Ljava/lang/String;
17 83 4 ds Lcom/mchange/v2/c3p0/ComboPooledDataSource;
24 83 5 threads Ljava/util/List;
25 32 6 i I
27 30 7 t Ljava/lang/Thread;
49 53 6 i I
54 83 6 outcomeMap Ljava/util/Map;
55 63 7 i I
57 61 8 outcome Ljava/lang/Integer;
58 61 9 old Ljava/lang/Integer;
64 83 7 last I
65 83 8 ii Ljava/util/Iterator;
67 82 9 outcome Ljava/lang/Integer;
68 82 10 count Ljava/lang/Integer;
69 82 11 oc I
70 82 12 c I
77 81 13 i I
85 86 4 e Ljava/lang/Exception;
Exception table:
from to target type
34 38 39 any
39 40 39 any
16 83 84 Class java.lang.Exception
MethodParameters:
Name Flags
argv
private static void usage();
descriptor: ()V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=0, args_size=0
0: getstatic java.lang.System.err:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "java -Djdbc.drivers=<comma_sep_list_of_drivers> "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
1: ldc Lcom/mchange/v2/c3p0/test/ConnectionDispersionTest;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
2: ldc " <jdbc_url> [<username> <password>]"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
3: invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
4: iconst_m1
invokestatic java.lang.System.exit:(I)V
5: return
LocalVariableTable:
Start End Slot Name Signature
}
SourceFile: "ConnectionDispersionTest.java"
NestMembers:
com.mchange.v2.c3p0.test.ConnectionDispersionTest$CompeteThread
InnerClasses:
CompeteThread = com.mchange.v2.c3p0.test.ConnectionDispersionTest$CompeteThread of com.mchange.v2.c3p0.test.ConnectionDispersionTest