在项目中经常会创建一个工具类,在里面定义很多public static 的方法,声明成static能方便调用,但是碰到并发操作的时候会不会出问题呢?如何解决啊?

解决方案 »

  1.   

    并发操作有可能出问题的
    如果有必要,可以在方法前声明 synchronized,如public synchronized static 
      

  2.   

    只要在static方法中没有使用共享数据(类变量等)就不会有并发问题
      

  3.   

    在两个地方同时调用一个static方法这样会有问题吗
      

  4.   

    如果你的方法中没有使用到static的成员变量,不会存在并发问题。反之则需要考虑并发。
      

  5.   

    如果把数据库连接放在static方法里,有什么问题呢
      

  6.   

    static变量被CPU分配到进程范围内,进程内部的线程可以共享这个static变量,jvm调度线程轮流获得CPU的使用权,当一个线程失去CPU使用权时,会同时释放它对运行时所占用的资源的使用权,static变量被当前线程使用,当然这里有static的值的问题。这貌似是jvm自动的调度线程,比如web应用中前台多个请求到达后台,后台就会启动多个线程去处理这些请求,这些线程的调度是jvm自动处理的。如果后台还有通过线程API实现的线程,手动操作这些线程的调度的方法最终还是反应到jvm对线程的调度上。
      

  7.   

    容器实现了处理前台请求的线程的同步
    http://www.jdon.com/jivejdon/thread/33699