zoukankan      html  css  js  c++  java
  • 多线程状态下调用SimpleDateFormat.format()抛出 ArrayIndexOutOfBoundsException 异常

    本来想在类的顶部设置一个 静态的SimpleDateFormat常量

    public final static DateFormat dateFormatGMT = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss z", Locale.ENGLISH);

    供多个线程使用,但用了一个星期后,在今天晚上发现抛出两个异常。

    当时的线程数应该在 30个左右。

    我一直认为是线程安全的,但是今天抛出这个异常:

    Exception in thread "Thread-91" Exception in thread "Thread-101" java.lang.ArrayIndexOutOfBoundsException: -2147483648
    at java.text.SimpleDateFormat.subFormat(Unknown Source)
    at java.text.SimpleDateFormat.format(Unknown Source)
    at java.text.SimpleDateFormat.format(Unknown Source)
    at java.text.DateFormat.format(Unknown Source)
    at server.Task.run(Task.java:362)

    我一时也不知哪里出了问题,搜索了一下,找到一个答案:
    java.text.SimpleDateFormat 类不是线程安全的。

    http://www.ibm.com/developerworks/cn/java/j-jtp09263/

    最后只好把代码改了一下:

    private DateFormat dateFormatGMT = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss z", Locale.ENGLISH);

    2009-10-15

  • 相关阅读:
    tcp/ip的通俗讲述(转)
    linux中的read_link
    浅拷贝和深拷贝
    JAVA的动态代理Jdk实现方式
    友元函数
    孤儿进程、僵尸进程
    waitpid()函数
    wait()函数
    dup2函数
    exec族函数
  • 原文地址:https://www.cnblogs.com/personnel/p/4582988.html
Copyright © 2011-2022 走看看