2014-03-26 51 views
2

我正在编写一个Nexus 7应用程序,并继承了一个骨架应用程序。来自另一位开发者我对它运行了一个findbugs分析,findbugs警告SimpleDateFormat的一个静态实例:Android应用中的线程安全?

正如JavaDoc所述,DateFormats对于多线程使用本质上是不安全的。检测器发现了一个对通过静态字段获得的DateFormat实例的调用。这看起来很可疑。

我在我的应用程序中没有任何显式的线程创建或后台操作。因此,我需要考虑上述警告,还是可以忽略它?我不确定在Android应用中实际运行的线程(除了UI服务线程)。

的日期格式对象被设置在构造是这样的:

私有静态最后的SimpleDateFormat shortCsvDateFormat =新 的SimpleDateFormat( “EEE MMM d YYYY”);

+1

很难说,如果我们不知道日期格式用于什么。它是只读还是在运行时设置? – schlingel

+0

Dateformat对象在构造函数中分配一次。 –

+0

不是一个很好的风格,但应该是一个问题 – schlingel

回答

1

对不起,'不'迷路了。

这应该不成问题。

但当然,这是一个可能的但不是很可能的错误来源。如果您查看SimpleDateFormat的文档,您会看到应用新模式的方法有两种。

所以有可能一个线程更改模式,而另一个线程使用旧模式。但是这看起来不太可能给出变量的名字。 (我假设CSV模式在运行时不会改变。)

如果最后的变量封装在CSVWriter类中或者其他东西的可能性更小。