2013-06-13 2 views
1

스레드 수준에서 시간대 설정을 설정하려고합니다. 이전에는 Date 및 Calendar 객체를 사용하고 있으며 모두 동일한 Datetime을 반환합니다. JVM 수준에서 로캘 설정을 보았지만 스레드 수준에서 로캘 설정을 사용한 적이 없습니다. 즉, 동일한 클래스의 세 가지 다른 스레드를 만드는 경우 각 스레드가 다른 로캘 설정 (특히 TimeZones)을 따르길 바랍니다.자바에서 스레드 수준 로케일 설정

그래서 나는 로케일 설정에 따라 다른 날짜 시간을 얻을 수 있어야

Calendar c = Calendar.getInstance(); 

Date d = new Date(); 

또는

를 호출 할 때마다.

+0

로캘을 스레드 생성자에 인수로 전달할 수 없습니까? @TheNewIdiot에서 언급했듯이'Calendar '를위한 팩토리 메소드가있어서 로케일을 지정할 수있다. – fge

답변

1

이 목적으로 ThreadLocal 개체를 사용할 수 있습니다. Locale과 같은 ThreadLocal 개체를 만들려면 ThreadLocal<Locale>Calendar#getInstance(Locale)을 사용하여 Calendar 개체의 인스턴스를 가져 오는 데 사용할 수있는 스레드 로컬 Locale 개체를 갖습니다.