Maison > Questions et réponses > le corps du texte
大家讲道理2017-04-18 10:39:44
Selon la conception, ThreadLocal
devrait exister en fonction de l'existence de Thread
Chaque fil peut avoir un espace de stockage, donc je suis tout à fait d'accord avec votre deuxième point, je ne suis pas tout à fait d'accord. compréhensible.
Si vous mettez map
dans ThreadLocal
selon votre conception, alors ce map
doit être de static
(ou une variable membre dans un ThreadLocal
singleton), ce qui poserait de sérieux problèmes dans la conception . , cela map
sera très difficile à gérer :
1. 试想有没有线程安全问题?
2. 线程销毁后怎么处理,不做处理这个map将会越来越大?
Le design a un ensemble de méthodes, et même une philosophie, qu'il faut savourer avec attention.
黄舟2017-04-18 10:39:44
Au moins la seule chose à laquelle je peux penser est :
Réduire le coût de l'exclusion mutuelle
Il existe un scénario : afin d'améliorer les performances de DateFormat, il est généralement combiné avec ThreadLocal.
怪我咯2017-04-18 10:39:44
Certaines conceptions ne sont parfois pas uniquement destinées aux performances. Vous devez savoir que Java accorde la plus grande attention aux modèles de conception et que la responsabilité unique est l'un des principes les plus importants des modèles de conception.
D'un autre côté, ne serait-il pas plus rapide d'implémenter directement une Map dans ThreadLocal que d'utiliser Map directement. Cependant, cela viole évidemment la responsabilité unique et rend la maintenance plus coûteuse ?
迷茫2017-04-18 10:39:44
Si ThreadLoad utilise directement Map<Thread, Object> comme structure de données sous-jacente, lorsqu'un grand nombre de threads utilisent ThreadLocal, les performances d'accès à la carte diminueront en même temps que le cycle de vie du thread, la carte sous-jacente devra d'abord diminuer. être ajoutée et supprimée fréquemment, ce qui peut facilement entraîner des goulots d'étranglement dans les performances.