Le principe sous-jacent de ThreadLocal

(1) ThreadLocal est un mécanisme de stockage local de thread fourni en Java, qui peut être utilisé pour mettre en cache des données dans un thread, et le thread peut obtenir des données mises en cache à tout moment et par n'importe quelle méthode.
(2) La couche inférieure de ThreadLocal est implémentée via ThreadLocalMap. Il y a un ThreadLocalMap dans chaque objet Thread (notez qu'il ne s'agit pas d'un objet ThreadLocal). La clé de Map est l'objet ThreadLocal et la valeur de Map est le valeur qui doit être mise en cache.
(3) Si ThreadLocal est utilisé dans le pool de threads, cela provoquera une fuite de mémoire, car lorsque l'objet ThreadLocal est épuisé, la clé, la valeur ou l'objet Entry à définir doivent être recyclés, mais les threads du pool de threads ne sera pas recyclé, et L'objet thread pointe vers ThreadLocalMap via une référence forte, et ThreadLocalMap pointe vers l'objet Entry via une référence forte. Si le thread n'est pas recyclé, l'objet Entry ne sera pas recyclé, ce qui entraînera une mémoire La solution consiste à appeler manuellement ThreadLocal après avoir utilisé l'objet ThreadLocal La méthode remove efface manuellement l'objet.
(4) Le scénario d'application classique de ThreadLocal est la gestion des connexions (un thread contient une connexion, l'objet de connexion peut être passé entre différentes méthodes et les threads ne partagent pas la même connexion).
insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/weixin_49131718/article/details/131795407
conseillé
Classement