Java 程序public class Test extends Action{
   private static final DateFormat dateFormat1 = new SimpleDateFormat("yyyy/MM/dd");
   main(){
     dateFormat1.format(xxxx);
   }
}会有以下BUGBug: Call to method of static java.text.DateFormat
Pattern id: STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE, type: STCAL, category: MT_CORRECTNESS
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.我得疑问就是作为一个JAVA类来说,界面多次点击这个Action算不算多线程(我认为extends Thread 或者实现Runable接口的才是线程) 如果不算多线程的话 那这种方式调用为啥提示会出现这样的BUG

解决方案 »

  1.   

    楼主你的代码很High   有个性,,,,,,,,,,,,,顶一个,,
      

  2.   

    兄台整的这个是struts1吗(extends   Action)?
    struts1中的Action对象在应用启动时,只会被创建一次,也就是说整个应用中在应用运行阶段只有一个action对象。
    struts1没有脱离HttpServlet等servlet使用的类,它只是进行了封装,在学习JSP/SERVLET时,LZ应该知道servlet对象在整个应用是单例的,使用多线程访问servlet。
    action是用来处理用户的请求的,可能会有很多的客户端请求需要这个action对象来响应,只有一个action对象,怎么办,用多线程。
    我想LZ的不明白之处是以为action类本身是一个多线程类,其实不是,它只是一个处理类,多线程去使用这个处理类的对象。
    这个多线程不是你自己提供的,而是由服务器提供的,当你的请求到达服务器时,服务器就会帮你开启一条线程,用这个线程去使用action对象。如果有多个请求,那就开启多个线程去使用这个action对象。
    至于服务器时怎么开启多线程的,兄台无需细究,只需要理解就行了。