我有一个 Java 应用程序,它使用类的compareTo()
方法BigDecimal
来分类(大)实数,读取为字符串,根据其类型(基本上,“太大”,双精度或浮点数)。应用程序每秒读取大量此类字符串,因此任何性能优化都是必不可少的。
以下是代码的简短摘录:
static final BigDecimal MAX_LONG = new BigDecimal(Long.MAX_VALUE);
static final BigDecimal MAX_FLOAT = new BigDecimal(Float.MAX_VALUE);
static final BigDecimal MAX_DOUBLE = new BigDecimal(Double.MAX_VALUE);
String value = readValue(); // Read the number as a string
BigDecimal number = new BigDecimal(value);
if (number.compareTo(MAX_DOUBLE) > 0)
{
...
}
else if (number.compareTo(MAX_FLOAT) > 0)
{
...
}
else if (number.compareTo(MAX_LONG) > 0)
{
...
}
所以,2个问题
- 在多线程环境中,进行上述比较是否安全(给定静态字段)?
- 是否有任何线程安全且更快的方法来实现上述分类?