本帖最后由 relike 于 2012-12-01 22:57:42 编辑

解决方案 »

  1.   

    查了下资料

    java 方法本身是线程安全的,这相当于c语言等函数式语言一样,在多线程下任何方法(包括 静态方法,和非静态方法)。但是有一个问题在于,在方法中有没有全局变量(类静态变量,对象实例变量),如果有全局变量,在多线程调用的时候要多加注意进行同步处理,如果都是方法内部的临时变量,则方法不会有任何问题,可以在多线程下使用,而不管是静态方法,还是非静态方法。
    ”按照这个理论的话每个线程调用的execute方法都是相互独立的,所以我的程序这样使用是没有问题的
    希望大大们看看我这个结论是否正确,谢谢
      

  2.   

    补充一下,暂时不需要考虑sqlserver的锁问题(这个我了解怎么处理),仅仅讨论java多线程这部分的问题
      

  3.   

    dbConn 如果是定义在类中的一个属性,那么他必然是不安全的。
    但是所谓的不安全也只是针对你是对他如何操作,比如你程序对他的操作从来就只有读没有写操作,那么无论你如何多请求过来,在这个程序里面还是正确的,因为他从来就不会对dbConn做写操作。
    对于你说的Statement对象,也是一样的道理。
    判断他是否安全,看你是如何操作这个对象吧,在线程run方法里面的对象都是在独立的栈里面的,所以说是绝对安全的。但是如何是类中定义的一个对象,那么必然所有的线程都共享这个对象,至于你说的安不安全就针对于你对该对象的读写操作是如何进行的。
      

  4.   


    哦,非常感谢
    差不多明白了,也就是说在run线程中使用对象的方法的时候这个方法的状态都是在每个线程独立的栈里的,线程间是互相不影响的(当然如果这个方法操作了对象公共资源就是另外一种情况了),这样理解没有什么问题吧?
    查了一下JDBC的connection是线程安全的,Statement对象是在对象方法中定义的,也就是说这种情况下多线程对调用对象中写数据库的方法是安全的吧?希望大师能再解答下,谢谢