17
17
package org .springframework .core .convert .support ;
18
18
19
19
import java .lang .reflect .Array ;
20
- import java .util .ArrayDeque ;
21
20
import java .util .ArrayList ;
22
21
import java .util .Collections ;
23
22
import java .util .Deque ;
24
23
import java .util .HashSet ;
25
- import java .util .LinkedHashMap ;
26
- import java .util .LinkedHashSet ;
27
24
import java .util .List ;
28
25
import java .util .Map ;
29
26
import java .util .Optional ;
30
27
import java .util .Set ;
28
+ import java .util .concurrent .ConcurrentHashMap ;
29
+ import java .util .concurrent .ConcurrentLinkedDeque ;
30
+ import java .util .concurrent .CopyOnWriteArraySet ;
31
31
32
32
import org .springframework .core .DecoratingProxy ;
33
33
import org .springframework .core .ResolvableType ;
@@ -500,9 +500,9 @@ public int compareTo(ConverterCacheKey other) {
500
500
*/
501
501
private static class Converters {
502
502
503
- private final Set <GenericConverter > globalConverters = new LinkedHashSet <>();
503
+ private final Set <GenericConverter > globalConverters = new CopyOnWriteArraySet <>();
504
504
505
- private final Map <ConvertiblePair , ConvertersForPair > converters = new LinkedHashMap <>(36 );
505
+ private final Map <ConvertiblePair , ConvertersForPair > converters = new ConcurrentHashMap <>(256 );
506
506
507
507
public void add (GenericConverter converter ) {
508
508
Set <ConvertiblePair > convertibleTypes = converter .getConvertibleTypes ();
@@ -513,8 +513,7 @@ public void add(GenericConverter converter) {
513
513
}
514
514
else {
515
515
for (ConvertiblePair convertiblePair : convertibleTypes ) {
516
- ConvertersForPair convertersForPair = getMatchableConverters (convertiblePair );
517
- convertersForPair .add (converter );
516
+ getMatchableConverters (convertiblePair ).add (converter );
518
517
}
519
518
}
520
519
}
@@ -652,7 +651,7 @@ private List<String> getConverterStrings() {
652
651
*/
653
652
private static class ConvertersForPair {
654
653
655
- private final Deque <GenericConverter > converters = new ArrayDeque <>(1 );
654
+ private final Deque <GenericConverter > converters = new ConcurrentLinkedDeque <>();
656
655
657
656
public void add (GenericConverter converter ) {
658
657
this .converters .addFirst (converter );
0 commit comments