Caldendar是线程安全的吗?

BatiTan 2008-12-04 02:58:56
利用java.util.Calendar获取系统时间是不是线程安全的?
请给出判断的具体理由~
...全文
1776 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
flsglhb 2010-09-27
  • 打赏
  • 举报
回复
急用,回复看看
yulu0214 2008-12-04
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ChDw 的回复:]
如果只是获取时间,Calendar.getInstance()是线程安全的,因为实际上它是不断创建新对象的。

但是里面的set方法这些不是安全的
[/Quote]
学习
wm920 2008-12-04
  • 打赏
  • 举报
回复


为什么不写个独立的时间类型进行封装。通过代码调用自己写的时间封装方法。
这样就不用考虑线程安全问题。

例如客户端获取服务器端的准确时间问题。《就是一个例子》
ChDw 2008-12-04
  • 打赏
  • 举报
回复
如果只是获取时间,Calendar.getInstance()是线程安全的,因为实际上它是不断创建新对象的。

但是里面的set方法这些不是安全的
BatiTan 2008-12-04
  • 打赏
  • 举报
回复
以下地址讨论了Date和Calendar的安全性
http://developers.sun.com.cn/Java/jsr-310-new-java-date-time-api.html

至于DateFormat,在源代码中可以找到注释

* <p>
* 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.
*
* @see Format
* @see NumberFormat
* @see SimpleDateFormat
* @see java.util.Calendar
* @see java.util.GregorianCalendar
* @see java.util.TimeZone
* @version 1.57 11/17/05
* @author Mark Davis, Chen-Lieh Huang, Alan Liu
*/
public abstract class DateFormat extends Format {
可以看到已经提示非线程同步的~
ouyangxiaokang6 2008-12-04
  • 打赏
  • 举报
回复
加同步锁
bxrlucky 2008-12-04
  • 打赏
  • 举报
回复
看到这个问题后,我也想知道是不是,看了看api可还是没找到答案。
有人能告诉我判断是否是线程安全的判断标准吗?
digyso888 2008-12-04
  • 打赏
  • 举报
回复
那怎么办啊
BatiTan 2008-12-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xcluii 的回复:]
不是线程安全的
java.util.Calendar类将日期同时存储为与标准纪元之间的偏移量以及一组日历字段。此双精度表示导致在意外的时间重新计算日历字段,从而产生不可预测的性能特点,java.util.Calendar是可改变的。
[/Quote]恩。..我也查到了
关于获取时间的一些类,如java.util.Date, java.util.Calendar都不是线程安全的
还有就是对时间格式化时,DateFormat和SimpleDateFormat也不是线程安全的~
xcluii 2008-12-04
  • 打赏
  • 举报
回复
不是线程安全的
java.util.Calendar类将日期同时存储为与标准纪元之间的偏移量以及一组日历字段。此双精度表示导致在意外的时间重新计算日历字段,从而产生不可预测的性能特点,java.util.Calendar是可改变的。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧