为了使NumberFormat操作线程安全,我使用了ThreadLocal,如下所示:
public class ThreadSafeNumberFormatter {
private static final ThreadLocal<NumberFormat> numberFormatHolder = new ThreadLocal<NumberFormat>() {
@Override
protected NumberFormat initialValue() {
return NumberFormat.getInstance();
}
};
public static NumberFormat getNumberFormatter() {
return numberFormatHolder.get();
}
}
但是当我使用ThreadSafeNumberFormatter时,setMaximumFractionDigits不起作用:
NumberFormat FORMAT = ThreadSafeNumberFormatter.getNumberFormatter();
FORMAT.setMaximumFractionDigits(2);
如果我使用以下代码,那么工作正常:
NumberFormat FORMAT = NumberFormat.getNumberInstance();
FORMAT.setMaximumFractionDigits(2);
有谁知道我做错了什么以及如何解决?
答案 0 :(得分:0)
我的猜测是你在一个线程中设置它并尝试在另一个线程中读取它。这显然不会奏效。我们不能在没有更多例子的情况下告诉我们。