У меня есть объект ThreadLocal ниже:
private static final ThreadLocal< DecimalFormat > formatter = new ThreadLocal< DecimalFormat >()
{
@Override
protected DecimalFormat initialValue()
{
// n should be any number of decimals without having to specify them.
return new DecimalFormat();
}
};
Когда я запускаю formatter.get.format(1234567)
в немецком языке, я получаю: 123456,0
, что не то, что я хочу.
Я изменилобъект ThreadLocal для:
private static final ThreadLocal< DecimalFormat > localisedDecimalFormatter = new ThreadLocal< DecimalFormat >()
{
public DecimalFormat get()
{
return new DecimalFormat();
}
};
Когда я запускаю formatter.get.format(1234567)
в немецкой локали, я получаю: 123.456
, это именно то, что я хочу.
Использование формата DecimalFormat (123456) даетожидаемое значение, но не является потокобезопасным
Мой вопрос, является ли это неправильное использование ThreadLocal?Если так, как я мог бы использовать это, не используя плохие методы кодирования?(Я знаю, что мог бы использовать formatter.remove () для запуска initialValue () каждый раз, но не уверен, является ли это излишним)