¿Cómo garantiza ThreadLocal que un hilo tenga solo un Looper?
Primero, debes saber que hay una variable sThreadLocal en Looper, que se utiliza para almacenar información de contexto
y es una variable estática final calificada, por lo que es única e inmutable.
Después de comprender la función de sThreadLocal, consulte los siguientes preparativos
Primero llame al método sThreadLocal.get()
Y ThreadLocalMap es un HashMap, por lo que necesita obtener un HashMap y determinar si está vacío
Si no hay ningún nodo con la clave sThreadLocal, obtenga valor = null y use este valor como el valor de sThreadLocal, es decir, sThreadLocal, nullgt;; Si el mapa está vacío, cree un HashMap y agréguele De esta manera, el método get obtendrá Looper o null, si es Looper, arrojará un excepción, si es nulo, llamará al método sThreadLocal set(). Si es un valor nulo, llame a sThreadLocal.set() Esto en realidad está usando el Looper como valor de sThreadLocal Regresando al principio, cómo garantizar que un hilo tenga ¿Solo un Looper? Debido a que sThreadLocal es el contexto del hilo y es único, y hay pares clave-valor Por lo tanto, un hilo tiene un solo Looper. Si no sabe mucho sobre HashMap, este artículo puede resultarle útil. El principio de HashMap