OSDN Git Service

Modifies OpenSSLSocketImpl to use a different lock for the instance count. It was...
authorcrazybob <crazybob@google.com>
Wed, 1 Jul 2009 20:30:58 +0000 (15:30 -0500)
committercrazybob <crazybob@google.com>
Wed, 1 Jul 2009 21:30:13 +0000 (16:30 -0500)
resulting in a VM crash.

libcore/x-net/src/main/java/org/apache/harmony/xnet/provider/jsse/OpenSSLSocketImpl.java

index 3b9006d..fcc1a77 100644 (file)
@@ -30,6 +30,7 @@ import java.security.cert.CertificateException;
 import java.security.cert.X509Certificate;
 import java.security.interfaces.RSAPublicKey;
 import java.util.ArrayList;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -74,18 +75,14 @@ public class OpenSSLSocketImpl extends javax.net.ssl.SSLSocket {
         "TLSv1"
         };
 
-    private static int instanceCount = 0;
+    private static final AtomicInteger instanceCount = new AtomicInteger(0);
 
     public static int getInstanceCount() {
-        synchronized (OpenSSLSocketImpl.class) {
-            return instanceCount;
-        }
+        return instanceCount.get();
     }
 
     private static void updateInstanceCount(int amount) {
-        synchronized (OpenSSLSocketImpl.class) {
-            instanceCount += amount;
-        }
+        instanceCount.addAndGet(amount);
     }
 
     /**