Que tipo de variável utilizo?

No Livro JAVA SERVER PAGES - O GUIA DO DESENVOLVEDOR
ná página 13, parágrafo 4, diz:

Multithreading
Quando chegam diversas solicitações para um servlet de uma vez, novos threads java são criados para servir cada cliente.
Um equívoco comum em que os desenvolvedores de servlets incorrem é utilizar variáveis de instância para armazenar dados como informações do usuário. Nunca faça isso, porque vários usuários compartilharão a mesa instância do Servlet.

Sei que existem:

Variáveis de Instância - no caso será um objeto só e várias threads, então a variável desse objeto será compartilhada entre os threads,
variáveis de classe é comum a não só esse objeto como a todos os objetos da classe, famoso static

Variáveis Globais: são as que são declaradas fora de qualquer método e fora dos construtores, usualmente no cabeçalho, elas são acessadas pela classe inteira
Variáveis Locais: Já as locais, são as de dentro dos métodos, nasce e morre ali naquele bloco de comandos

Então me criou a dúvida, que variável utilizo?? que não é compartilhado entre os objetos, que cada thread enxergue a sua???

kra, vc terá que usar variáveis locais (de métodos). Por que assim, quando uma nova thread for criada, o metodo será chamado como se nao houvesse outras “instancias” dele rodando em outras threads. A menos que o metodo seja marcado como sincronyzed, pois assim, soh haverá uma unica cópia dele por vez rodando. Pra resumir, se vc tiver 10 threads e todas estiverem rodando o mesmo metodo, um nao sabe nada do outro, ou seja nao compartilha valores das variaveis locais.

espero ter ajudado… flw…

Ajudou sim, e deu uma clareada… muito obrigado

ok, qlq coisa, posta ai, flw.

As variáveis locais existem na pilha de chamadas de métodos, e cada thread tem sua própria pilha. Assim, não há perigo de uma thread acessar as variáveis que estão na pilha de outra thread. O mesmo já não acontece com variáveis de instância, que por residirem na heap podem ser compartilhadas por uma ou mais threads. Por outro lado, os valores das variáveis locais são perdidos quando a execução do método termina, de forma que em um Servlet, você não pode usar variáveis locais para armazenar dados que devem persistir entre mais de uma requisição. Se esse for o caso, você deve usar sessões para manter informações de um usuário específico, entre uma requisição e outra.

Sim, estava prevendo a utilização de sessão… estou dando uma lida… sempre programei standalone… quero fazer um programa bem separado de código juntamente com o web designer… mas vi que é quase impossível…

ele terá que saber sintaxe um pouco… pretendo usar JSTL, com EL… por enquanto não vou usar framework… só puro, ganhar uma experiência…