본문 바로가기

java

ThreadLocal ThreadLocal(스레드 로컬) 사용하기 하나의 인스턴스로 만들어진 여러개의 스레드들은 인스턴스 변수를 공유한다. 그래서 만약 스래들만의 개별적인 정보 저장해야 할 상황에서는 인스턴스 변수로는 부족하다. 자바는 어떤 형식이거나 쓰레드당 개별적인 인스턴스를 생성하고 접근하는 ThreadLocal이라는 클래스를 제공한다. 아래의 예제는 ThreadLocal 을 사용한 예제이다. counter 변수는 스레드가 공유하게 되는 값이며, threadLocal 변수는 공유되지 않는 각각의 스레드가 가지고 있는 값이다. counter는 공유되기 때문에 모든 스레드에서 하나의 값을 공통적으로 사용할 수 있고, threadLocal은 각각의 스레드가 랜덤으로 얻은 값을 가지고 있는 것을 볼 수 있다. //ThreadL.. 더보기
isAssignableFrom Object 가 특정 타입(클래스 및 인터페이스)을 상속받았거나 구현한 경우를 체크하기 위해서는if(obj instanceof $TargetClass.class) {}위와 같이 체크하면 된다.그런데 특정 클래스가 다른 인터페이스를 구현했거나 상속받았는지를 체크하기 위해서는 어떻게 하면 될까?상위클래스들을 모조리(java.lang.Object 가 될때까지) 찾아다니면서 구현한 Interface들을 확인하면 될것도 같은데 왠지 세련되지 않은 것 같다.간만에 Java API document를 열어서 java.lang.Class 에 구현되어 있는 메소드 목록을 훑어 보던 중isAssignableFrom 이라는 메소드를 발견했다. 나의 요구사항은 사용자로부터 입력받은 클래스가 java.util.Collection.. 더보기
StringUtils Commons-Lang IV. org.apache.commons.lang.StringUtils java api의 String을 보면 문자열 처리하기에는 제공하는 기능들이 너무 빈약합니다. 그래서 프로그래머들은 자기 나름데로의 독특한 Utils를 만들어 사용하지요. 하지만 Commons-lang에서 제공하는 StringUtils를 사용한다면 더이상 자신만의 Utils를 사용할 필요가 없습니다. 여기 모두 ㄷ ㅏ ~ 있기 때문이지요 ^^ 한가지 더 장점이 있다면 String의 null 값때문에 더이상 NullPointerException을 생각하지 않아도 된다는 것입니다. StringUtils에서 ㄷ ㅏ ~ 알아서 해주기 때문입니다. 그럼 어떠한 기능들의 함수가 있는지 알아봅시다 반환값 함수명 파라미터 St.. 더보기