public class sun.net.www.http.KeepAliveCache extends java.util.HashMap<sun.net.www.http.KeepAliveKey, sun.net.www.http.ClientVector> implements java.lang.Runnable
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: sun.net.www.http.KeepAliveCache
  super_class: java.util.HashMap
{
  private static final long serialVersionUID;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: -2937172892064557949

  static final int MAX_CONNECTIONS;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 5

  static int result;
    descriptor: I
    flags: (0x0008) ACC_STATIC

  static final int LIFETIME;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 5000

  private java.lang.Thread keepAliveTimer;
    descriptor: Ljava/lang/Thread;
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 62
            iconst_m1
            putstatic sun.net.www.http.KeepAliveCache.result:I
         1: .line 75
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static int getMaxConnections();
    descriptor: ()I
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 64
            getstatic sun.net.www.http.KeepAliveCache.result:I
            iconst_m1
            if_icmpne 7
         1: .line 66
            new sun.security.action.GetIntegerAction
            dup
            ldc "http.maxConnections"
            iconst_5
            invokespecial sun.security.action.GetIntegerAction.<init>:(Ljava/lang/String;I)V
         2: .line 65
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.lang.Integer
         3: .line 67
            invokevirtual java.lang.Integer.intValue:()I
         4: .line 65
            putstatic sun.net.www.http.KeepAliveCache.result:I
         5: .line 68
            getstatic sun.net.www.http.KeepAliveCache.result:I
            ifgt 7
         6: .line 69
            iconst_5
            putstatic sun.net.www.http.KeepAliveCache.result:I
         7: .line 72
      StackMap locals:
      StackMap stack:
            getstatic sun.net.www.http.KeepAliveCache.result:I
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // sun.net.www.http.KeepAliveCache this
         0: .line 82
            aload 0 /* this */
            invokespecial java.util.HashMap.<init>:()V
         1: .line 77
            aload 0 /* this */
            aconst_null
            putfield sun.net.www.http.KeepAliveCache.keepAliveTimer:Ljava/lang/Thread;
         2: .line 82
            return
        end local 0 // sun.net.www.http.KeepAliveCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lsun/net/www/http/KeepAliveCache;

  public synchronized void put(java.net.URL, java.lang.Object, sun.net.www.http.HttpClient);
    descriptor: (Ljava/net/URL;Ljava/lang/Object;Lsun/net/www/http/HttpClient;)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=4, locals=8, args_size=4
        start local 0 // sun.net.www.http.KeepAliveCache this
        start local 1 // java.net.URL url
        start local 2 // java.lang.Object obj
        start local 3 // sun.net.www.http.HttpClient http
         0: .line 90
            aload 0 /* this */
            getfield sun.net.www.http.KeepAliveCache.keepAliveTimer:Ljava/lang/Thread;
            ifnonnull 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: istore 4 /* startThread */
        start local 4 // boolean startThread
         3: .line 91
            iload 4 /* startThread */
            ifne 6
         4: .line 92
            aload 0 /* this */
            getfield sun.net.www.http.KeepAliveCache.keepAliveTimer:Ljava/lang/Thread;
            invokevirtual java.lang.Thread.isAlive:()Z
            ifne 6
         5: .line 93
            iconst_1
            istore 4 /* startThread */
         6: .line 96
      StackMap locals: int
      StackMap stack:
            iload 4 /* startThread */
            ifeq 10
         7: .line 97
            aload 0 /* this */
            invokevirtual sun.net.www.http.KeepAliveCache.clear:()V
         8: .line 104
            aload 0 /* this */
            astore 5 /* cache */
        start local 5 // sun.net.www.http.KeepAliveCache cache
         9: .line 105
            new sun.net.www.http.KeepAliveCache$1
            dup
            aload 0 /* this */
            aload 5 /* cache */
            invokespecial sun.net.www.http.KeepAliveCache$1.<init>:(Lsun/net/www/http/KeepAliveCache;Lsun/net/www/http/KeepAliveCache;)V
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            pop
        end local 5 // sun.net.www.http.KeepAliveCache cache
        10: .line 116
      StackMap locals:
      StackMap stack:
            new sun.net.www.http.KeepAliveKey
            dup
            aload 1 /* url */
            aload 2 /* obj */
            invokespecial sun.net.www.http.KeepAliveKey.<init>:(Ljava/net/URL;Ljava/lang/Object;)V
            astore 5 /* key */
        start local 5 // sun.net.www.http.KeepAliveKey key
        11: .line 117
            aload 0 /* this */
            aload 5 /* key */
            invokespecial java.util.HashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast sun.net.www.http.ClientVector
            astore 6 /* v */
        start local 6 // sun.net.www.http.ClientVector v
        12: .line 119
            aload 6 /* v */
            ifnonnull 21
        13: .line 120
            aload 3 /* http */
            invokevirtual sun.net.www.http.HttpClient.getKeepAliveTimeout:()I
            istore 7 /* keepAliveTimeout */
        start local 7 // int keepAliveTimeout
        14: .line 121
            new sun.net.www.http.ClientVector
            dup
            iload 7 /* keepAliveTimeout */
            ifle 16
        15: .line 122
            iload 7 /* keepAliveTimeout */
            sipush 1000
            imul
            goto 17
      StackMap locals: sun.net.www.http.KeepAliveCache java.net.URL java.lang.Object sun.net.www.http.HttpClient int sun.net.www.http.KeepAliveKey sun.net.www.http.ClientVector int
      StackMap stack: new 14 new 14
        16: sipush 5000
        17: .line 121
      StackMap locals: sun.net.www.http.KeepAliveCache java.net.URL java.lang.Object sun.net.www.http.HttpClient int sun.net.www.http.KeepAliveKey sun.net.www.http.ClientVector int
      StackMap stack: new 14 new 14 int
            invokespecial sun.net.www.http.ClientVector.<init>:(I)V
            astore 6 /* v */
        18: .line 123
            aload 6 /* v */
            aload 3 /* http */
            invokevirtual sun.net.www.http.ClientVector.put:(Lsun/net/www/http/HttpClient;)V
        19: .line 124
            aload 0 /* this */
            aload 5 /* key */
            aload 6 /* v */
            invokespecial java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 7 // int keepAliveTimeout
        20: .line 125
            goto 22
        21: .line 126
      StackMap locals:
      StackMap stack:
            aload 6 /* v */
            aload 3 /* http */
            invokevirtual sun.net.www.http.ClientVector.put:(Lsun/net/www/http/HttpClient;)V
        22: .line 128
      StackMap locals:
      StackMap stack:
            return
        end local 6 // sun.net.www.http.ClientVector v
        end local 5 // sun.net.www.http.KeepAliveKey key
        end local 4 // boolean startThread
        end local 3 // sun.net.www.http.HttpClient http
        end local 2 // java.lang.Object obj
        end local 1 // java.net.URL url
        end local 0 // sun.net.www.http.KeepAliveCache this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   23     0              this  Lsun/net/www/http/KeepAliveCache;
            0   23     1               url  Ljava/net/URL;
            0   23     2               obj  Ljava/lang/Object;
            0   23     3              http  Lsun/net/www/http/HttpClient;
            3   23     4       startThread  Z
            9   10     5             cache  Lsun/net/www/http/KeepAliveCache;
           11   23     5               key  Lsun/net/www/http/KeepAliveKey;
           12   23     6                 v  Lsun/net/www/http/ClientVector;
           14   20     7  keepAliveTimeout  I
    MethodParameters:
      Name  Flags
      url   final
      obj   
      http  

  public synchronized void remove(sun.net.www.http.HttpClient, java.lang.Object);
    descriptor: (Lsun/net/www/http/HttpClient;Ljava/lang/Object;)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // sun.net.www.http.KeepAliveCache this
        start local 1 // sun.net.www.http.HttpClient h
        start local 2 // java.lang.Object obj
         0: .line 132
            new sun.net.www.http.KeepAliveKey
            dup
            aload 1 /* h */
            getfield sun.net.www.http.HttpClient.url:Ljava/net/URL;
            aload 2 /* obj */
            invokespecial sun.net.www.http.KeepAliveKey.<init>:(Ljava/net/URL;Ljava/lang/Object;)V
            astore 3 /* key */
        start local 3 // sun.net.www.http.KeepAliveKey key
         1: .line 133
            aload 0 /* this */
            aload 3 /* key */
            invokespecial java.util.HashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast sun.net.www.http.ClientVector
            astore 4 /* v */
        start local 4 // sun.net.www.http.ClientVector v
         2: .line 134
            aload 4 /* v */
            ifnull 6
         3: .line 135
            aload 4 /* v */
            aload 1 /* h */
            invokevirtual sun.net.www.http.ClientVector.remove:(Lsun/net/www/http/HttpClient;)Z
            pop
         4: .line 136
            aload 4 /* v */
            invokevirtual sun.net.www.http.ClientVector.isEmpty:()Z
            ifeq 6
         5: .line 137
            aload 0 /* this */
            aload 3 /* key */
            invokevirtual sun.net.www.http.KeepAliveCache.removeVector:(Lsun/net/www/http/KeepAliveKey;)V
         6: .line 140
      StackMap locals: sun.net.www.http.KeepAliveKey sun.net.www.http.ClientVector
      StackMap stack:
            return
        end local 4 // sun.net.www.http.ClientVector v
        end local 3 // sun.net.www.http.KeepAliveKey key
        end local 2 // java.lang.Object obj
        end local 1 // sun.net.www.http.HttpClient h
        end local 0 // sun.net.www.http.KeepAliveCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lsun/net/www/http/KeepAliveCache;
            0    7     1     h  Lsun/net/www/http/HttpClient;
            0    7     2   obj  Ljava/lang/Object;
            1    7     3   key  Lsun/net/www/http/KeepAliveKey;
            2    7     4     v  Lsun/net/www/http/ClientVector;
    MethodParameters:
      Name  Flags
      h     
      obj   

  synchronized void removeVector(sun.net.www.http.KeepAliveKey);
    descriptor: (Lsun/net/www/http/KeepAliveKey;)V
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // sun.net.www.http.KeepAliveCache this
        start local 1 // sun.net.www.http.KeepAliveKey k
         0: .line 146
            aload 0 /* this */
            aload 1 /* k */
            invokespecial java.util.HashMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 147
            return
        end local 1 // sun.net.www.http.KeepAliveKey k
        end local 0 // sun.net.www.http.KeepAliveCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/net/www/http/KeepAliveCache;
            0    2     1     k  Lsun/net/www/http/KeepAliveKey;
    MethodParameters:
      Name  Flags
      k     

  public synchronized sun.net.www.http.HttpClient get(java.net.URL, java.lang.Object);
    descriptor: (Ljava/net/URL;Ljava/lang/Object;)Lsun/net/www/http/HttpClient;
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // sun.net.www.http.KeepAliveCache this
        start local 1 // java.net.URL url
        start local 2 // java.lang.Object obj
         0: .line 153
            new sun.net.www.http.KeepAliveKey
            dup
            aload 1 /* url */
            aload 2 /* obj */
            invokespecial sun.net.www.http.KeepAliveKey.<init>:(Ljava/net/URL;Ljava/lang/Object;)V
            astore 3 /* key */
        start local 3 // sun.net.www.http.KeepAliveKey key
         1: .line 154
            aload 0 /* this */
            aload 3 /* key */
            invokespecial java.util.HashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast sun.net.www.http.ClientVector
            astore 4 /* v */
        start local 4 // sun.net.www.http.ClientVector v
         2: .line 155
            aload 4 /* v */
            ifnonnull 4
         3: .line 156
            aconst_null
            areturn
         4: .line 158
      StackMap locals: sun.net.www.http.KeepAliveKey sun.net.www.http.ClientVector
      StackMap stack:
            aload 4 /* v */
            invokevirtual sun.net.www.http.ClientVector.get:()Lsun/net/www/http/HttpClient;
            areturn
        end local 4 // sun.net.www.http.ClientVector v
        end local 3 // sun.net.www.http.KeepAliveKey key
        end local 2 // java.lang.Object obj
        end local 1 // java.net.URL url
        end local 0 // sun.net.www.http.KeepAliveCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lsun/net/www/http/KeepAliveCache;
            0    5     1   url  Ljava/net/URL;
            0    5     2   obj  Ljava/lang/Object;
            1    5     3   key  Lsun/net/www/http/KeepAliveKey;
            2    5     4     v  Lsun/net/www/http/ClientVector;
    MethodParameters:
      Name  Flags
      url   
      obj   

  public void run();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=10, args_size=1
        start local 0 // sun.net.www.http.KeepAliveCache this
         0: .line 169
      StackMap locals:
      StackMap stack:
            ldc 5000
            invokestatic java.lang.Thread.sleep:(J)V
         1: .line 170
            goto 3
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
         2: pop
         3: .line 173
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            astore 1
            monitorenter
         4: .line 174
            invokestatic java.lang.System.currentTimeMillis:()J
            lstore 2 /* currentTime */
        start local 2 // long currentTime
         5: .line 175
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 4 /* keysToRemove */
        start local 4 // java.util.List keysToRemove
         6: .line 177
            aload 0 /* this */
            invokevirtual sun.net.www.http.KeepAliveCache.keySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 6
            goto 23
      StackMap locals: sun.net.www.http.KeepAliveCache sun.net.www.http.KeepAliveCache long java.util.List top java.util.Iterator
      StackMap stack:
         7: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast sun.net.www.http.KeepAliveKey
            astore 5 /* key */
        start local 5 // sun.net.www.http.KeepAliveKey key
         8: .line 178
            aload 0 /* this */
            aload 5 /* key */
            invokevirtual sun.net.www.http.KeepAliveCache.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast sun.net.www.http.ClientVector
            astore 7 /* v */
        start local 7 // sun.net.www.http.ClientVector v
         9: .line 179
            aload 7 /* v */
            dup
            astore 8
            monitorenter
        10: .line 180
            aload 7 /* v */
            invokevirtual sun.net.www.http.ClientVector.peek:()Ljava/lang/Object;
            checkcast sun.net.www.http.KeepAliveEntry
            astore 9 /* e */
        start local 9 // sun.net.www.http.KeepAliveEntry e
        11: .line 181
            goto 16
        12: .line 182
      StackMap locals: sun.net.www.http.KeepAliveCache sun.net.www.http.KeepAliveCache long java.util.List sun.net.www.http.KeepAliveKey java.util.Iterator sun.net.www.http.ClientVector sun.net.www.http.ClientVector sun.net.www.http.KeepAliveEntry
      StackMap stack:
            lload 2 /* currentTime */
            aload 9 /* e */
            getfield sun.net.www.http.KeepAliveEntry.idleStartTime:J
            lsub
            aload 7 /* v */
            getfield sun.net.www.http.ClientVector.nap:I
            i2l
            lcmp
            ifle 17
        13: .line 183
            aload 7 /* v */
            invokevirtual sun.net.www.http.ClientVector.poll:()Ljava/lang/Object;
            pop
        14: .line 184
            aload 9 /* e */
            getfield sun.net.www.http.KeepAliveEntry.hc:Lsun/net/www/http/HttpClient;
            invokevirtual sun.net.www.http.HttpClient.closeServer:()V
        15: .line 188
            aload 7 /* v */
            invokevirtual sun.net.www.http.ClientVector.peek:()Ljava/lang/Object;
            checkcast sun.net.www.http.KeepAliveEntry
            astore 9 /* e */
        16: .line 181
      StackMap locals:
      StackMap stack:
            aload 9 /* e */
            ifnonnull 12
        17: .line 191
      StackMap locals:
      StackMap stack:
            aload 7 /* v */
            invokevirtual sun.net.www.http.ClientVector.isEmpty:()Z
            ifeq 19
        18: .line 192
            aload 4 /* keysToRemove */
            aload 5 /* key */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 9 // sun.net.www.http.KeepAliveEntry e
        19: .line 179
      StackMap locals:
      StackMap stack:
            aload 8
            monitorexit
        20: goto 23
      StackMap locals:
      StackMap stack: java.lang.Throwable
        21: aload 8
            monitorexit
        22: athrow
        end local 7 // sun.net.www.http.ClientVector v
        end local 5 // sun.net.www.http.KeepAliveKey key
        23: .line 177
      StackMap locals: sun.net.www.http.KeepAliveCache sun.net.www.http.KeepAliveCache long java.util.List top java.util.Iterator
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 7
        24: .line 197
            aload 4 /* keysToRemove */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 6
            goto 27
      StackMap locals:
      StackMap stack:
        25: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast sun.net.www.http.KeepAliveKey
            astore 5 /* key */
        start local 5 // sun.net.www.http.KeepAliveKey key
        26: .line 198
            aload 0 /* this */
            aload 5 /* key */
            invokevirtual sun.net.www.http.KeepAliveCache.removeVector:(Lsun/net/www/http/KeepAliveKey;)V
        end local 5 // sun.net.www.http.KeepAliveKey key
        27: .line 197
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 25
        end local 4 // java.util.List keysToRemove
        end local 2 // long currentTime
        28: .line 173
            aload 1
            monitorexit
        29: goto 32
      StackMap locals: sun.net.www.http.KeepAliveCache sun.net.www.http.KeepAliveCache
      StackMap stack: java.lang.Throwable
        30: aload 1
            monitorexit
        31: athrow
        32: .line 201
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.net.www.http.KeepAliveCache.isEmpty:()Z
            ifeq 0
        33: .line 202
            return
        end local 0 // sun.net.www.http.KeepAliveCache this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   34     0          this  Lsun/net/www/http/KeepAliveCache;
            5   28     2   currentTime  J
            6   28     4  keysToRemove  Ljava/util/List<Lsun/net/www/http/KeepAliveKey;>;
            8   23     5           key  Lsun/net/www/http/KeepAliveKey;
            9   23     7             v  Lsun/net/www/http/ClientVector;
           11   19     9             e  Lsun/net/www/http/KeepAliveEntry;
           26   27     5           key  Lsun/net/www/http/KeepAliveKey;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.InterruptedException
          10    20      21  any
          21    22      21  any
           4    29      30  any
          30    31      30  any

  private void writeObject(java.io.ObjectOutputStream);
    descriptor: (Ljava/io/ObjectOutputStream;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // sun.net.www.http.KeepAliveCache this
        start local 1 // java.io.ObjectOutputStream stream
         0: .line 209
            new java.io.NotSerializableException
            dup
            invokespecial java.io.NotSerializableException.<init>:()V
            athrow
        end local 1 // java.io.ObjectOutputStream stream
        end local 0 // sun.net.www.http.KeepAliveCache this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lsun/net/www/http/KeepAliveCache;
            0    1     1  stream  Ljava/io/ObjectOutputStream;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      stream  

  private void readObject(java.io.ObjectInputStream);
    descriptor: (Ljava/io/ObjectInputStream;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // sun.net.www.http.KeepAliveCache this
        start local 1 // java.io.ObjectInputStream stream
         0: .line 216
            new java.io.NotSerializableException
            dup
            invokespecial java.io.NotSerializableException.<init>:()V
            athrow
        end local 1 // java.io.ObjectInputStream stream
        end local 0 // sun.net.www.http.KeepAliveCache this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lsun/net/www/http/KeepAliveCache;
            0    1     1  stream  Ljava/io/ObjectInputStream;
    Exceptions:
      throws java.io.IOException, java.lang.ClassNotFoundException
    MethodParameters:
        Name  Flags
      stream  
}
Signature: Ljava/util/HashMap<Lsun/net/www/http/KeepAliveKey;Lsun/net/www/http/ClientVector;>;Ljava/lang/Runnable;
SourceFile: "KeepAliveCache.java"
NestMembers:
  sun.net.www.http.KeepAliveCache$1
InnerClasses:
  sun.net.www.http.KeepAliveCache$1