In .net, c'è un "uber" thread-local-storage (TLS) che consente ai dati TLS arbitrari di "saltare" automaticamente da una discussione a un'altra . È basato sullo CallContext class.Qual è l'equivalente Java di C# "Contesto logico di chiamata"
In altre parole, una richiesta logica può generare una gerarchia di nuovi thread e ognuno di questi thread avrà accesso allo stesso TLS del thread originale. È una funzionalità molto potente, in particolare per problemi di registrazione, autorizzazione, multi-tenancy o branding.
Qual è l'equivalente in Java?
Solo in .net 4.5 has the "logical callcontext" gained a "copy on write" capability che consente ai thread di apportare modifiche private al callcontext logico. In altre parole, .net sta ancora maturando questa capacità e fornisce una maggiore stabilità.
Se Java ha una nozione equivalente, quanto è stabile? Che problemi ha?
Chiarimento
so già che Java ha una capacità di Thread Local Storage (TLS). Questa non è la domanda. Sto chiedendo se Java ha un equivalente del .net "contesto di chiamata logica" che è un costrutto molto più potente del semplice TLS.
Interessante domanda. Tuttavia, sfortunatamente penso che tu sia sfortunato.Per quanto ne so, non esiste una funzionalità di questo tipo in Java. Sarei felice di essere corretto e di imparare qualcosa di nuovo. –
Solo una domanda per chiarimenti - se il "filo originale" nel tuo esempio cambia i suoi dati TLS, i suoi fili figli vedono il valore aggiornato? Ad esempio, i thread figlio non solo ottengono una copia, hanno una visualizzazione live del TLS principale? –
Non esiste un supporto asincrono ufficiale in JDK. Non è difficile però crearne di propri (senza sintassi a livello di linguaggio). Ad esempio, il mio [Fiber e FiberLocal] (http://bayou.io/release/0.9/docs/async/Async_Programming.html#Fiber) – ZhongYu