Java를 공부하다보면 String은 불변(immutable) 객체라는 이야기를 많이 듣게 된다. String text = "Java"; text = text + " String"; System.out.println(text); // Java String 아니 위 코드처럼 String 값이 잘만 변하는데 무슨 말이야! 라고 생각될 수 있지만 Java의 String 객체는 변하지 않는다. 객체가 불변일 경우 멀티 쓰레드 환경에서 값이 변경될 일이 없이 때문에 자연스럽게 Thread safe하게 된다. JDK 5 이전에는 String 문자열을 더하면 새로운 String 객체가 생성되고, 기존 객체는 쓰레기가 되어 나중에 GC(Garbage Collection)의 대상이 되었다. 이것이 반복되면 쓰레기가 계속..