Skip to content

Commit 0c8c763

Browse files
Use double checked locking to remove sync block
1 parent 96dd040 commit 0c8c763

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

src/main/java/com/fasterxml/jackson/databind/ser/SerializerCache.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public final class SerializerCache
3333
/**
3434
* Most recent read-only instance, created from _sharedMap, if any.
3535
*/
36-
private ReadOnlyClassToSerializerMap _readOnlyMap = null;
36+
private volatile ReadOnlyClassToSerializerMap _readOnlyMap = null;
3737

3838
public SerializerCache() { }
3939

@@ -43,11 +43,13 @@ public SerializerCache() { }
4343
*/
4444
public ReadOnlyClassToSerializerMap getReadOnlyLookupMap()
4545
{
46-
ReadOnlyClassToSerializerMap m;
47-
synchronized (this) {
48-
m = _readOnlyMap;
49-
if (m == null) {
50-
_readOnlyMap = m = ReadOnlyClassToSerializerMap.from(_sharedMap);
46+
ReadOnlyClassToSerializerMap m = _readOnlyMap;
47+
if(m == null) {
48+
synchronized (this) {
49+
m = _readOnlyMap;
50+
if (m == null) {
51+
_readOnlyMap = m = ReadOnlyClassToSerializerMap.from(_sharedMap);
52+
}
5153
}
5254
}
5355
return m.instance();

0 commit comments

Comments
 (0)