Java · Avançado · Inglês · Técnico
ScopedValue
Valor imutável compartilhado dentro de um escopo de execução e das threads filhas, alternativa mais segura e barata ao ThreadLocal, finalizada no Java 25.
Onde usar
Aparece em servidores com virtual threads para propagar usuário e requisição. Em review: 'troque o ThreadLocal por ScopedValue'.
Em código
static final ScopedValue<String> USER =
ScopedValue.newInstance();
ScopedValue.where(USER, "ana").run(() -> {
System.out.println(USER.get()); // ana
});
// fora do run: USER.get() falhaExemplos
Bind the user with a ScopedValue instead of a ThreadLocal.
Vincule o usuário com um ScopedValue em vez de um ThreadLocal.
Outside the scope, get throws an exception.
Fora do escopo, o get lança uma exceção.
Cuidado
O valor é imutável e só existe dentro do run ou call; fora dele, get() lança exceção.
Sinônimos
valor com escopo
Antônimos
ThreadLocal