永发信息网

java simpledateformat是线程安全的吗

答案:2  悬赏:20  手机版
解决时间 2021-04-08 22:49
java simpledateformat是线程安全的吗
最佳答案
是线程不安全的,如果是多线程访问,就new对象,不要用static
全部回答
这样定义成全局的static变量是线程不安全的。 原因如下: simpledateformat类内部有一个calendar对象引用,它用来储存和这个sdf相关的日期信息,例如sdf.parse(datestr), sdf.format(date) 诸如此类的方法参数传入的日期相关string, date等等, 都是交由calendar引用来储存的.这样就会导致一个问题,如果你的sdf是个static的, 那么多个thread 之间就会共享这个sdf, 同时也是共享这个calendar引用, 并且, 观察 sdf.parse() 方法,你会发现有如下的调用: date parse() { calendar.clear(); // 清理calendar // 执行一些操作, 设置 calendar 的日期什么的 calendar.gettime(); // 获取calendar的时间 } 这里会导致的问题就是, 如果 线程a 调用了 sdf.parse(), 并且进行了 calendar.clear()后还未执行calendar.gettime()的时候,线程b又调用了sdf.parse(), 这时候线程b也执行了sdf.clear()方法, 这样就导致线程a的的calendar数据被清空了(实际上a,b的同时被清空了). 又或者当 a 执行了calendar.clear() 后被挂起, 这时候b 开始调用sdf.parse()并顺利i结束, 这样 a 的 calendar内存储的的date 变成了后来b设置的calendar的date。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
有班淑传奇的资源吗?
interested in the position are asked to se
康美达明月镜片怎么样,江苏康美达眼镜厂怎么
爱婴堡孕婴童连锁小沙江店这个地址在什么地方
六九年农历四月十六是什么星座
什么时候打新股容易中,打新股最佳时间:什么
qq名片怎么设置只有账号信息特权空间
已知等腰三角形周长是8,边长为整数,则腰为_
滑板怎么跳,如何滑游龙板
填空题长江中特有的________已经成为我国最稀
指甲剪太短后果是什么,什么牌子的指甲钳好用
iphone4s不小心摔了总是显示正在搜索是什么原
中国移动天华营业厅怎么去啊,有知道地址的么
天梭手表买了两个月不到,日期就乱了,怎么办
选择题1.下列加点字完全正确的一项是()A.
推荐资讯
当没有人可以依靠的时候,就要靠自己不断生长
单选题据外电报道,应美国副总统拜登的邀请,
新疆到重庆的路程是多少公里
枕芯什么牌子好点呢?请教下
为什么杜兰特加盟勇士联盟不否决
体质能量饮料中有没有激素?一天一瓶算不算多
南水北调工程指A.引滦入津B.引黄济青C.引密入
怡康大药房医药连锁索伦新英明大药房怎么去啊
大众帕萨特 奥迪a4l 现代索纳塔 哪款比较不错
晨曦的诗句
一定温度下,W g下列物质在足量氧气中充分燃
为什么那么多人喜欢呆在北京?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?