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