Ho appena saputo di ThreadLocal questa mattina. Ho letto che dovrebbe sempre essere finale e statico come:Confuso su ThreadLocal
private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
(Session è una sessione Hibernate)
La mia confusione è questa: Perché è statica, è disponibile a qualsiasi discussione nella JVM. Tuttavia conserverà le informazioni locali per ogni thread che le accede? Sto cercando di spiegarmelo, quindi mi scuso se non è chiaro. Ogni thread nell'applicazione ha accesso allo stesso oggetto ThreadLocal, ma l'oggetto ThreadLocal memorizzerà gli oggetti locali su ciascun thread?
Attenzione all'utilizzo di questo nelle applicazioni Web distribuite in un ambiente condiviso. Il thread locale si diffonderà in tutti i contesti e, dopo averlo annullato, i riferimenti nel thread locale non verranno eliminati. È necessario rimuovere manualmente i dati dopo ogni richiesta. – jontro
È apparentemente contraddittorio. 'ThreadLocal' dovrebbe essere unico in ogni thread, ma gli oggetti statici sono condivisi tra ogni thread. Stavo per fare la stessa domanda. – aliteralmind