rt

解决方案 »

  1.   

    run函数里的变量不就是只能在某个线程中使用吗?
      

  2.   

    线程函数里定义的变量都是线程私有变量的,线程间不能访问.如果需要定义线程间的共享,就用TreadLocal.当然定义全局变量也可在线程间访问,但就不是所讨论的范围了.
      

  3.   

    难道是在线程里定义的private 变量??????
      

  4.   

    线程私有变量,看上去像线程里的局部变量。 在线程里面定义的private变量是可以被多个线程共享的变量。
      

  5.   

    放到ThreadLocal里面,就只能本线程访问。
      

  6.   

    一个 static  Map , 以线程作为 key , 存储对象。你要用时:
    private static final MyClass instances = new ThreadLocal(){
      protected Object initialValue(){ 
    // 如果没有找到的话就调用获取初始值,实现默认是return null, 我们可以改下。 
         return new MyClass();
      }
    };public static MyClass getCurrentInstance(){
       return (MyClass) instances.get(); // 以当前线程作为 key 来检索对象实例。
    }public static void setCurrentInstance(MyClass sample){
       instances.set(sample); // 放进去。
    }以后每次都用  getCurrentInstance() 这样的方式访问, 同一个线程里的调用将得到同一个实例。
      

  7.   

    用ThreadLocal,其会为每个线程维护一个值(类似于在里面维护了一个map,线程id作key)