【Findbugs缺陷库】Call to static DateFormat

缺陷:Call to static DateFormat,使用了静态的DateFormat

缺陷类型:多线程正确性问题

严重级别:高

原因:DateFormat是非线程安全的

改进方法:需要创建多实例或线程同步

相关资料:

DateFormat.java注释

* Date formats are not synchronized.
* It is recommended to create separate format instances for each thread.
* If multiple threads access a format concurrently, it must be synchronized
* externally.

有问题的代码:

复制代码
package com.test.findbugs;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @since  2013-4-9 上午11:39:20
 * @bug Call to static DateFormat
 */
public class BugHere {
    private final static SimpleDateFormat sdf = new SimpleDateFormat(
    "yyyy-MM-dd HH:mm:ss");
    public void tempMethod(){
        System.out.println(sdf.format(new Date()));
    }
}
复制代码

修复后的代码:

复制代码
package com.test.findbugs;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @since  2013-4-9 上午11:39:20
 * @bug Call to static DateFormat
 */
public class FixedHere {
    private final static String FORMAT = "yyyy-MM-dd HH:mm:ss";
    public void tempMethod(){
        System.out.println(new SimpleDateFormat(FORMAT).format(new Date()));
    }
}

你可能感兴趣的:(【Findbugs缺陷库】Call to static DateFormat)