Olá,
Quando a gente projeta uma classe “thread safe” a gente não precisa se preocupar com as variaveis locais, pois cada thread é executada sobre a sua própria cópia dessas variáveis.
Eu deduzo então - e essa é a minha pergunta - que uma classe que não seja thread safe, se for instanciada, usada e descartada no interior de um mesmo método, não oferece nenhum risco diante de multiplas threads. Estou certo?
Por exemplo, a classe A abaixo não é thread safe:
public class A {
private int v1, v2;
public void setV(int v1, int v2) {
this.v1 = v1;
this.v2 = v2;
}
public int[] getV() {
int[] retVal = new int[2];
retVal[0] = v1;
retVal[1] = v2;
return retVal;
}
}
mas esse é um uso seguro daquela classe, do ponto de vista das threads:
public class B {
public void facaAlgo() {
A a = new A();
a.setV(1, 2);
int[] v = a.getV();
System.out.println(v[0]); //imprime "1", sempre, sem perigo!
System.out.println(v[1]); //imprime "2", sem supresas!
}
}
Se o único uso da classe A for através de B.facaAlgo() - ou outros semelhantes -, enquanto isso for verdadeiro, então o uso de A é seguro para multiplas threads. Eu estou certo?
Hel_all