Я верил струнный бассейн отказался местные Струны, когда их методы завершенияВключает ли пул строк локальные переменные?
Еще:
public class TestPool implements Runnable{
/**
* @param args the command line arguments
*/
public void run() {
String str= "hello";
synchronized(str){
try {
System.out.print(Thread.currentThread().getName());
Thread.sleep(500);
System.out.print(Thread.currentThread().getName());
}
catch(InterruptedException e){
}
}
}
public static void main(String []args){
new Thread(new TestPool(),"A").start();
new Thread(new TestPool(),"B").start();
}
}
Согласно руководству для Whizlabs', этот код correcly синхронизации своих тема на основе локальной String. Выход всегда будет AABB или BBAA. Зачем? Почему str String переживает локальную декларацию?
+1 для "(обновление) - вернитесь назад!"? –
Я должен написать это чаще :) Надеюсь, мой окончательный текст также заслуживает голосования. –
Ссылка - это локальная переменная, но String, на которую она указывает, - нет. Посмотрите, что произойдет, когда вы измените объявление на String str = new («hello»); – andandandand