Olá!
Estava resolvendo um exercício do whizlab e lá diz que se eu utilizar uma String para sincronizar um bloco de código, será possível utilizá-la(a String) em outros objetos que que terei sucesso na sincronização devido ao “pool de Strings”.
Dêem uma olhada no código:
[code]class Test implements Runnable {
public void run() {
String str = “hello”;
synchronized (str) {
System.out.print(Thread.currentThread().getName());
System.out.print(Thread.currentThread().getName());
}
}
public static void main(String[] args) {
new Thread(new Test(), "A").start();
new Thread(new Test(), "B").start();
}
}[/code]
A resposta será AABB ou então BBAA
"Trick" muuito interessante!
Mas minha dúvida é a seguinte… Qual o alcance desse pool, ele é válido para a aplicação inteira (quero dizer… vários processos diferentes têm acesso a um mesmo pool)?
E se sim… Quando ele é coletado pelo Garbage Collection(Somente no final da aplicação(tipo… nunca) )?
Abs.
Paulo Gervásio.