没有光加上个修饰synchronized这么简单的

解决方案 »

  1.   

    你的myreadgraph类是否只要一个Graph实例?如果这样的话最好做成单体模式
      

  2.   

    干脆我修改成
    public class myreadgraph(){public  static synchronized  Graph generategraph(){
    .........
    }}别的类只要调用 myreadgraph.generategraph()  这样可以保证 整个应用程序 只有一个 Graph的实例吗
      

  3.   

    private Graph g;
    private static Thread thread = Thread.currentThread();public static Graph generateGraph(){
        
        if(g!=null){
            return g;
        }
        
        // 只有一次同步性能损耗
        synchronized(thread){
            if(g==null){
                g = ....;//生成
            }
        }
        return g;
    }
      

  4.   

    纠正:
    private static Graph g;
      

  5.   

    如果允许并发不应该使用static, 使用static意味着系统只能有一个这样的实例. 定义普通方法吧, 数据对象跟着Session走即可.
      

  6.   

    我也同意不使用static,
    另外,建议用synchronized同步一下