补充一下,我在主线程和两个控制时间的线程里都用了这段代码,也操作同一数据表
不知道是否因为冲突?因为有时候不会出现这错误(一般一开始不会),有时候则出现。
还有这样的:
java.lang.NoClassDefFoundError: sun/reflect/ConstructorAccessorImpl at sun.misc.Unsafe.defineClass(Native Method) at sun.reflect.ClassDefiner.defineClass(ClassDefiner.java:45) at sun.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:381) at java.security.AccessController.doPrivileged(Native Method) at sun.reflect.MethodAccessorGenerator.generate(MethodAccessorGenerator.java:377) at sun.reflect.MethodAccessorGenerator.generateConstructor(MethodAccessorGenerator.java:76) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:30) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:274) at java.lang.Class.newInstance0(Class.java:306) at java.lang.Class.newInstance(Class.java:259) at com.microsoft.jdbc.base.BaseMessages.loadImplLocalMessages(Unknown Source) at com.microsoft.jdbc.base.BaseMessages.<init>(Unknown Source) at com.microsoft.jdbc.base.BaseWarnings.<init>(Unknown Source) at com.microsoft.jdbc.base.BaseStatement.<init>(Unknown Source) at com.microsoft.jdbc.base.BaseConnection.createStatement(Unknown Source) at football.mssqldb.executeQuery(mssqldb.java:60) at football.reminder.run(reminder.java:46) at java.util.TimerThread.mainLoop(Timer.java:432) at java.util.TimerThread.run(Timer.java:382)不知道这样的情况如何避免冲突?

解决方案 »

  1.   

    // 看你的代码,好像 rs 是个全局变量啊!
    // 试试定义 rs,stat 都定义为局部变量试试!
    // 又不会增加系统的什么消耗,多8个字节而已!
    public synchronized  ResultSet executeQuery(String sql) {
        ResultSet    rs = null;
        try {
        Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                                      ResultSet.CONCUR_UPDATABLE);      rs = stmt.executeQuery(sql);    }
        catch (SQLException ex) {
          System.err.println("aq.executeQuery:" + ex.getMessage());
          System.err.println("aq.executeQuery: " + sql);
        }
        return rs;
      }
      

  2.   

    hesi726(hesi) :
     现在我用你的代码,问题照旧啊!
    而且总是开始可以跑一阵,过一会就出现这错误了。请再帮我考虑一把!