You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by us...@apache.org on 2012/01/08 12:47:46 UTC

svn commit: r1228830 - in /lucene/dev/branches/lucene3305/modules/analysis/kuromoji/src/java/org/apache/lucene/analysis/kuromoji/dict: CharacterDefinition.java ConnectionCosts.java TokenInfoDictionary.java UnknownDictionary.java

Author: uschindler
Date: Sun Jan  8 11:47:45 2012
New Revision: 1228830

URL: http://svn.apache.org/viewvc?rev=1228830&view=rev
Log:
LUCENE-3305: Implement lazy loading singleton with Holder pattern instead synchronization

Modified:
    lucene/dev/branches/lucene3305/modules/analysis/kuromoji/src/java/org/apache/lucene/analysis/kuromoji/dict/CharacterDefinition.java
    lucene/dev/branches/lucene3305/modules/analysis/kuromoji/src/java/org/apache/lucene/analysis/kuromoji/dict/ConnectionCosts.java
    lucene/dev/branches/lucene3305/modules/analysis/kuromoji/src/java/org/apache/lucene/analysis/kuromoji/dict/TokenInfoDictionary.java
    lucene/dev/branches/lucene3305/modules/analysis/kuromoji/src/java/org/apache/lucene/analysis/kuromoji/dict/UnknownDictionary.java

Modified: lucene/dev/branches/lucene3305/modules/analysis/kuromoji/src/java/org/apache/lucene/analysis/kuromoji/dict/CharacterDefinition.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3305/modules/analysis/kuromoji/src/java/org/apache/lucene/analysis/kuromoji/dict/CharacterDefinition.java?rev=1228830&r1=1228829&r2=1228830&view=diff
==============================================================================
--- lucene/dev/branches/lucene3305/modules/analysis/kuromoji/src/java/org/apache/lucene/analysis/kuromoji/dict/CharacterDefinition.java (original)
+++ lucene/dev/branches/lucene3305/modules/analysis/kuromoji/src/java/org/apache/lucene/analysis/kuromoji/dict/CharacterDefinition.java Sun Jan  8 11:47:45 2012
@@ -103,15 +103,18 @@ public final class CharacterDefinition {
     return (byte) CharacterClass.valueOf(characterClassName).ordinal();
   }
 
-  public synchronized static CharacterDefinition getInstance() {
-    if (singleton == null) try {
-      singleton = new CharacterDefinition();
-    } catch (IOException ioe) {
-      throw new RuntimeException("Cannot load CharacterDefinition.", ioe);
-    }
-    return singleton;
+  public static CharacterDefinition getInstance() {
+    return SingletonHolder.INSTANCE;
   }
   
-  private static CharacterDefinition singleton;
-  
+  private static class SingletonHolder {
+    static final CharacterDefinition INSTANCE;
+    static {
+      try {
+        INSTANCE = new CharacterDefinition();
+      } catch (IOException ioe) {
+        throw new RuntimeException("Cannot load CharacterDefinition.", ioe);
+      }
+    }
+   }
 }

Modified: lucene/dev/branches/lucene3305/modules/analysis/kuromoji/src/java/org/apache/lucene/analysis/kuromoji/dict/ConnectionCosts.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3305/modules/analysis/kuromoji/src/java/org/apache/lucene/analysis/kuromoji/dict/ConnectionCosts.java?rev=1228830&r1=1228829&r2=1228830&view=diff
==============================================================================
--- lucene/dev/branches/lucene3305/modules/analysis/kuromoji/src/java/org/apache/lucene/analysis/kuromoji/dict/ConnectionCosts.java (original)
+++ lucene/dev/branches/lucene3305/modules/analysis/kuromoji/src/java/org/apache/lucene/analysis/kuromoji/dict/ConnectionCosts.java Sun Jan  8 11:47:45 2012
@@ -75,15 +75,19 @@ public final class ConnectionCosts {
     }
   }
   
-  public synchronized static ConnectionCosts getInstance() {
-    if (singleton == null) try {
-      singleton = new ConnectionCosts();
-    } catch (IOException ioe) {
-      throw new RuntimeException("Cannot load ConnectionCosts.", ioe);
-    }
-    return singleton;
+  public static ConnectionCosts getInstance() {
+    return SingletonHolder.INSTANCE;
   }
   
-  private static ConnectionCosts singleton;
+  private static class SingletonHolder {
+    static final ConnectionCosts INSTANCE;
+    static {
+      try {
+        INSTANCE = new ConnectionCosts();
+      } catch (IOException ioe) {
+        throw new RuntimeException("Cannot load ConnectionCosts.", ioe);
+      }
+    }
+   }
   
 }

Modified: lucene/dev/branches/lucene3305/modules/analysis/kuromoji/src/java/org/apache/lucene/analysis/kuromoji/dict/TokenInfoDictionary.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3305/modules/analysis/kuromoji/src/java/org/apache/lucene/analysis/kuromoji/dict/TokenInfoDictionary.java?rev=1228830&r1=1228829&r2=1228830&view=diff
==============================================================================
--- lucene/dev/branches/lucene3305/modules/analysis/kuromoji/src/java/org/apache/lucene/analysis/kuromoji/dict/TokenInfoDictionary.java (original)
+++ lucene/dev/branches/lucene3305/modules/analysis/kuromoji/src/java/org/apache/lucene/analysis/kuromoji/dict/TokenInfoDictionary.java Sun Jan  8 11:47:45 2012
@@ -55,15 +55,19 @@ public final class TokenInfoDictionary e
     return fst;
   }
    
-  public synchronized static TokenInfoDictionary getInstance() {
-    if (singleton == null) try {
-      singleton = new TokenInfoDictionary();
-    } catch (IOException ioe) {
-      throw new RuntimeException("Cannot load TokenInfoDictionary.", ioe);
-    }
-    return singleton;
+  public static TokenInfoDictionary getInstance() {
+    return SingletonHolder.INSTANCE;
   }
   
-  private static TokenInfoDictionary singleton;
+  private static class SingletonHolder {
+    static final TokenInfoDictionary INSTANCE;
+    static {
+      try {
+        INSTANCE = new TokenInfoDictionary();
+      } catch (IOException ioe) {
+        throw new RuntimeException("Cannot load TokenInfoDictionary.", ioe);
+      }
+    }
+   }
   
 }

Modified: lucene/dev/branches/lucene3305/modules/analysis/kuromoji/src/java/org/apache/lucene/analysis/kuromoji/dict/UnknownDictionary.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3305/modules/analysis/kuromoji/src/java/org/apache/lucene/analysis/kuromoji/dict/UnknownDictionary.java?rev=1228830&r1=1228829&r2=1228830&view=diff
==============================================================================
--- lucene/dev/branches/lucene3305/modules/analysis/kuromoji/src/java/org/apache/lucene/analysis/kuromoji/dict/UnknownDictionary.java (original)
+++ lucene/dev/branches/lucene3305/modules/analysis/kuromoji/src/java/org/apache/lucene/analysis/kuromoji/dict/UnknownDictionary.java Sun Jan  8 11:47:45 2012
@@ -55,15 +55,19 @@ public final class UnknownDictionary ext
     return null;
   }
 
-  public synchronized static UnknownDictionary getInstance() {
-    if (singleton == null) try {
-      singleton = new UnknownDictionary();
-    } catch (IOException ioe) {
-      throw new RuntimeException("Cannot load UnknownDictionary.", ioe);
-    }
-    return singleton;
+  public static UnknownDictionary getInstance() {
+    return SingletonHolder.INSTANCE;
   }
   
-  private static UnknownDictionary singleton;
+  private static class SingletonHolder {
+    static final UnknownDictionary INSTANCE;
+    static {
+      try {
+        INSTANCE = new UnknownDictionary();
+      } catch (IOException ioe) {
+        throw new RuntimeException("Cannot load UnknownDictionary.", ioe);
+      }
+    }
+   }
   
 }