|
@@ -22,25 +22,26 @@ import org.apache.hadoop.classification.InterfaceAudience;
|
|
|
import org.apache.hadoop.classification.InterfaceStability;
|
|
|
import org.apache.hadoop.conf.*;
|
|
|
import org.apache.hadoop.util.ReflectionUtils;
|
|
|
-import java.util.HashMap;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.concurrent.ConcurrentHashMap;
|
|
|
|
|
|
/** Factories for non-public writables. Defining a factory permits {@link
|
|
|
* ObjectWritable} to be able to construct instances of non-public classes. */
|
|
|
@InterfaceAudience.Public
|
|
|
@InterfaceStability.Stable
|
|
|
public class WritableFactories {
|
|
|
- private static final HashMap<Class, WritableFactory> CLASS_TO_FACTORY =
|
|
|
- new HashMap<Class, WritableFactory>();
|
|
|
+ private static final Map<Class, WritableFactory> CLASS_TO_FACTORY =
|
|
|
+ new ConcurrentHashMap<Class, WritableFactory>();
|
|
|
|
|
|
private WritableFactories() {} // singleton
|
|
|
|
|
|
/** Define a factory for a class. */
|
|
|
- public static synchronized void setFactory(Class c, WritableFactory factory) {
|
|
|
+ public static void setFactory(Class c, WritableFactory factory) {
|
|
|
CLASS_TO_FACTORY.put(c, factory);
|
|
|
}
|
|
|
|
|
|
/** Define a factory for a class. */
|
|
|
- public static synchronized WritableFactory getFactory(Class c) {
|
|
|
+ public static WritableFactory getFactory(Class c) {
|
|
|
return CLASS_TO_FACTORY.get(c);
|
|
|
}
|
|
|
|