발생일: 2009.11.24 문제: 디자인 패턴 책을 보다가 예제에 HashTable 이 나오는 걸 봤다. HashTable 이라... 예전에 HashMap 과의 차이점을 찾아봤던 기억이 나기도 하는데, 아리까리하다. 게다가 HashTable 을 써본 적은 한 번도 없었다. 어떤 차이일까? 해결책: ArrayList 와 Vector 의 차이점과 같이 HashMap 과 HashTable 의 차이점은 동기화 지원 여부이다. Vector, Hashtable 은 동기화 되어있기 때문에 쓰레드 안전하다. 다만, 성능상의 이슈 때문에 Vector 와 Hashtable 을 사용할 때에는 잘 고려해서 사용해야 한다. API 를 보니 Stack 도 Vector 의 서브 클래스이므로 동기화 되어 있겠다~ 자세한 내용은 아..
발생일: 2009.11.24 문제: 이클립스(eclipse) 사용 시 Ctrl + Space 로 자동 완성(Template Proposals) 기능을 켜보면, 가끔 메서드 아이콘 옆에 작게 시계 표시가 되어 있는 게 있다. 이건 뭘 나타내는 걸까...? 해결책: 메서드 옆에 시계 표시가 되어 있는 것은, 동기화 된 메서드를 나타낸다. (메소드에 시계표시? 포스트에서 참고) 테스트 해보니 synchronized 구문을 써서 메서드를 선언할 경우에 해당하며, 메서드 안에서 synchronized 블럭을 사용할 때에는 표시되지 않는다.
발생일: 2008.09.03 문제: 메서드를 동기화 하려고 하는데, synchronized 와 static synchronized 의 차이점을 모르겠다. 해결책: synchronized method는 synchronized(this) { } 블럭으로 쓰는 것과 동일합니다. 즉, 현재 instance에 대해서만 동기화가 일어난다는 것이지요. 이 경우 해당 instance에서는 동기화가 일어나지만, 2개 이상의 instance가 있다면 각각의 instance에 대해 동기화가 일어나므로 두 개의 instance가 각각의 method를 실행하는 것이 가능합니다. 반면 static synchronized method의 경우는 해당 클래스의 클래스 객체에 대해 동기화가 일어납니다. 따라서, static 한 memb..