Prezados
senhores,
Imaginem a
seguinte classe:
public class
MinhaClasse {
public void
metodo() {
int a, b, c;
// algum processamento demorado utilizando
// as variáveis automáticas "a", "b" e "c"
}
}
Na máquina virtual
há apenas um objeto desta classe, denominado "meuObjeto".
Imaginem também
que na máquina virtual há mais três threads em execução. Em cada uma destas
threads há uma referência a "meuObjeto" -- logo, há um problema de acesso
concorrente ao método "metodo()". Como vocês podem observar, este não é um
método "synchronized", e portanto poderá haver acesso simultâneo por meio das
três threads.
A pergunta é:
quando as threads estão executando o método "metodo()", elas obterão os mesmos
valores para as variáveis "a", "b" e "c" ou para cada cliente haverá um conjunto
de valores diferente (ou seja, áreas de memória diferentes, sendo empilhadas e
desempilhadas de acordo com a necessidade)?
A resposta deve
ser embasada em alguma boa referência (especificação da Sun, livros conhecidos),
e não em achismos ou livros de má qualidade.
(Quem responder
primeiro ganha uma caixa de Bis! ;-D)
Augusto Jun
Devegili
Software Architect @ NeoGrid
S.A.
Phone: +55 (47) 422-7099
Sun Certified Architect for Java Technology
1.2
Sun Certified Developer for the Java Platform
1.1
Microsoft Certified
Professional