利用java.util.Calendar获取系统时间是不是线程安全的?
请给出判断的具体理由~

解决方案 »

  1.   

    不是线程安全的
    java.util.Calendar类将日期同时存储为与标准纪元之间的偏移量以及一组日历字段。此双精度表示导致在意外的时间重新计算日历字段,从而产生不可预测的性能特点,java.util.Calendar是可改变的。
      

  2.   

    恩。..我也查到了
    关于获取时间的一些类,如java.util.Date, java.util.Calendar都不是线程安全的
    还有就是对时间格式化时,DateFormat和SimpleDateFormat也不是线程安全的~
      

  3.   

    看到这个问题后,我也想知道是不是,看了看api可还是没找到答案。
    有人能告诉我判断是否是线程安全的判断标准吗?
      

  4.   

    以下地址讨论了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 {
    可以看到已经提示非线程同步的~
      

  5.   

    如果只是获取时间,Calendar.getInstance()是线程安全的,因为实际上它是不断创建新对象的。但是里面的set方法这些不是安全的