ThreadLocal 클래스

J/Java 2012. 1. 6. 12:40


출처 : http://seevaa.net/381

자바 1.2 버전부터 제공되고 있지만 아직 다수의 개발자들이 잘 몰라서 활용을 잘 못하는 기능이 하나 있는데, 그 기능이 바로 쓰레드 단위로 로컬 변수를 할당하는 기능이다. 이 기능은 ThreadLocal 클래스를 통해서 제공되는데
...
ThreadLocal을 이용하면 쓰레드 영역에 변수를 설정할 수 있기 때문에, 특정 쓰레드가 실행하는 모든 코드에서 그 쓰레드에 설정된 변수 값을 사용할 수 있게 된다.
...

아래는 트랜잭션처리를 위해 ThreadLocal을 이용해서 동일한 Connection을 얻기 위한 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class ConnectionUtil .... {
...
/*
threadLocal을 이용해서 같은 connection을 끊지 않는 이상은 공유
*/
public static final ThreadLocal<Connection> threadLocal = new ThreadLocal<Connection>();
public Connection getConnection(){
Connection connection = (Connection)threadLocal.get();
try{
if(connection == null){
connection = dataSource.getConnection();
threadLocal.set(connection);
}
return connection;
}catch(SQLException e){
e.printStackTrace();
throw new DAOException(e.getMessage());
}
}
...
}

설정

트랙백

댓글