java.text.dateformat_调用static java.text.DateFormat的方法不可取?
DateFormats不是线程安全的,意味着它们维护状态的内部表示。如果多个线程同时访问同一个实例,在静态上下文中使用它们可能会产生一些很奇怪的错误。
我的建议是让你的变量局部到你使用它们,而不是使它们的类的静态属性。看起来当你初始化类时,你可能会这样做,所以你可以在构造函数中这样做:
public class MyClass {
private String fileName;
public MyClass() {
final Date today = Calendar.getInstance().getTime();
final DateFormat yymmdd = new SimpleDateFormat("yyMMdd");
this.fileName = "file_" + yymmdd.format(TODAY);
}
...
}
如果你需要在多个地方使用格式器,你可能只是使模式静态final,并创建一个新的本地DateFormat需要时:
public class MyClass {
private static final String FILENAME_DATE_PATTERN = "yyMMdd";
public void myMethod() {
final DateFormat format = new SimpleDateFormat(FILENAME_DATE_PATTERN);
// do some formatting
}
}
As the JavaDoc states, DateFormats are
inherently unsafe for multithreaded
use. The detector has found a call to
an instance of DateFormat that has
been obtained via a static field. This
looks suspicous.
For more information on this see Sun
Bug #6231579 and Sun Bug #6178997.
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.
Jack Leow’s answer也有一个好点,关于你的静态使用“TODAY”的语义。
除此之外,我实际上在高流量的生产环境中看到了这种情况,这是一个很混乱的事情,首先调试;所以在我的经验中,FindBugs警告实际上是一个有用的建议(不像其他一些静态分析规则,有时看起来是nitpicky)。
java.text.dateformat_调用static java.text.DateFormat的方法不可取?相关推荐
- Java中final和static对修饰类、方法、属性的总结
一.final 根据程序上下文环境,Java关键字final有"这是无法改变的"或者"终态的"含义,它可以修饰非抽象类.非抽象类成员方法和变量.你 ...
- 为什么java要你写static,java static关键字理解
文章大纲: 1.为什么static会有这样的效果? 2.static的使用 3.static误区 4.static面试题 static的魔法效果是: 被static关键字修饰的方法或者变量不需要依赖于 ...
- 通过JAVA的反射调用类中的公有私有方法
文章来源http://lavasoft.blog.51cto.com/62575/61002及http://blog.csdn.net/sunyujia/article/details/2501709 ...
- java 跨类 调用 model_Model.java中的这两个方法,为什么不能在子类中调用,或者包内调用也行啊。...
@JFinal 你好,想跟你请教个问题: Model.java中的这两个方法,为什么不能在子类中调用,或者包内调用也行啊. /** * Find model. */ @SuppressWarnings ...
- java中怎么调用对数函数_Java对数函数及其运算方法
Java对数函数的计算方法非常有问题,然而在API中却有惊人的误差.但是假如运用了以下的方法,用Java处理数字所碰到的小麻烦就可以轻而易举的解决了. Sun的J2SE提供了一个单一的Java对数方法 ...
- java构造函数重载调用,在Java中调用ambiguously重载的构造函数
I just saw this C# question and wondered, if something similar could happen in Java. It can, with cl ...
- java作用域外调用对象,Java Web应用中往往通过设置不同作用域的属性来达到通讯的目的。 如果某个对象只在同一请求中共享,通过调用哪个类 的setAttribute方法设置属性。( )...
[多选题]客源市场定位的依据包括(). [单选题]除了诗歌创作,作者的散文成就同样引人注目,其代表性的散文集是( )? [单选题]缩窄性心包炎指各种原因引起心包脏壁层炎症.纤维素性渗出物沉积,并逐渐机 ...
- Java的知识点10——static关键字、静态初始化块、 参数传值机制、包、导入类import、 静态导入
static 关键字 在类中,用static声明的成员变量为静态成员变量,也称为类变量. 类变量的生命周期和类相同,在整个应用程序执行期间都有效.它有如下特点: 1. 为该类的公用变量,属于类,被该类 ...
- 带有Java Util日志记录的Java 8延迟调用
在博客文章"在Log4j2中更好地执行非日志记录器调用"中 ,我介绍了可以在Log4j 2中使用的方法,这些方法可以减少或避免在基于指定日志级别实际上根本未记录的日志语句中调用方法 ...
最新文章
- 机器学习模型评估指标总结!
- Linux常用指令---find | locate(查找)
- 菜鸟学习JavaScript小实验之函数引用
- 网络事件触发自己主动登录
- 实战weblogic集群之创建节点和集群
- Leetcode每日一题:140.word-break-ii(单词拆分)
- 熊猫分发_熊猫下降列和行
- SpringBoot任务——JSoup+定时任务 定时爬取微博热搜至数据库
- 越狱后显示网络无法连接服务器,苹果手机:iOS12 越狱后 Cydia 无法联网闪退等问题汇总...
- 用Python实现一个商场管理系统(附源码)
- pfSense安装和配置pfBlockerNg
- 沃顿商学院自我管理课——完美融合
- 微信公众号二次开发框架-微擎
- srs系列七——Vhost模式
- 【PDF下载】大数据峰会之MaxCompute大数据语言的新发展
- git pull fatal: refusing to merge unrelated histories
- c#遍历字典并删除元素
- python qrcode生成彩色二维码
- 【企业微信开发】企业微信开发测试推送应用消息流程
- 光伏“大数据”:如何解决数据不对称问题?
热门文章
- 论文研读 —— 5. FaceNet A Unified Embedding for Face Recognition and Clustering (1/3)
- hdu-4045-Machine scheduling-组合数学(插板+第二类Stirling数)
- TensorFlow猫狗大战完整代码实现和详细注释
- 《程序员羊皮卷》:一本程序员职场故事集
- C++:创建链表的过程详解
- SAP 移动类型相关表
- 鸿蒙系统和ios流畅度对比,鸿蒙OS对比iOS,华为再次“超越”,流畅度大幅领先苹果!...
- [原]星际争霸地图显示与网页设计
- 退休教师照顾卧床妻子35年
- css图片位置改变过度效果_CSS位置:绝对的,过度使用的