Как хранить данные с помощью ThreadLocalJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как хранить данные с помощью ThreadLocal

Сообщение Anonymous »


Я работаю с Strust2 и Hibernate. Мне нужно узнать курс обмена валюты (USD к INR). Мне нужно использовать эту информацию более чем в одном месте. Для этой цели я использую ThreadLocal.

публичный класс GetExchangeRate{ частный ThreadLocal threadLocalRate = новый ThreadLocal(); общественный двойной getCurrencyRate (UserDet userDet) { LOG.info("Идентификатор потока ---------------->"+Thread.currentThread().getId()); Двойная валютная ставка = (Double) threadLocalRate.get(); если (currencyRate == ноль) { LOG.info("Объект не существует"); ---//мой код, который используется для определения курса доллара США --> обменный курс INR threadLocalRate.set(currencyRate); } вернуть валютную ставку; } } Мне нужно вызвать указанный выше метод из четырех разных методов. Когда я вызываю вышеуказанный метод из разных методов, весь приведенный выше код выполняется. Мое требование - только один раз, чтобы весь метод был выполнен. И оставшиеся три раза общий метод не должен выполняться. Должно быть возвращено значение, хранящееся в объекте ThreadLocal.

Вот мой отчет журнала, в котором показано, что указанный выше общий метод выполнен.

[ ИНФОРМАЦИЯ] 20.09.2012 10:20:04,611 [CommonFormats] (CommonFormats.java:getCurrencyRate:159) Идентификатор темы ---------------------------->54 [ИНФОРМАЦИЯ] 20.09.2012 10:20:04,611 [CommonFormats] (CommonFormats.java:getCurrencyRate:163) Объект не существует [ИНФО] 2012-09-20 10:20:49,529 [CommonFormats] (CommonFormats.java:getCurrencyRate:159) Идентификатор темы ---------------------------->54 [ИНФОРМАЦИЯ] 20.09.2012 10:20:49,529 [CommonFormats] (CommonFormats.java:getCurrencyRate:163) Объект не существует Пожалуйста, подскажите, что я делаю не так. Вышеуказанный метод будет вызываться из четырех методов. Два метода принадлежат классу Action, а Два метода принадлежат классу уровня обслуживания.

Мой пример кода
//Класс действия публичный класс StrutsAction1{ публичный строковый метод1(){ // мой код CommonFormats commonFormats = новый CommonFormats(); System.out.println(commonFormats.getCurrencyRate()); // мой код } публичный строковый метод2(){ // мой код CommonFormats commonFormats = новый CommonFormats(); System.out.println(commonFormats.getCurrencyRate()); // мой код } } //Бизнес-класс общественный класс BussinessLogic{ публичный строковый метод1(){ // мой код CommonFormats commonFormats = новый CommonFormats(); System.out.println(commonFormats.getCurrencyRate()); // мой код } публичный строковый метод2(){ // мой код CommonFormats commonFormats = новый CommonFormats(); System.out.println(commonFormats.getCurrencyRate()); // мой код } }
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»