你说各个变量共享变量j,这个j指的是run方法里的那个j吗?如果是这样,你的理解是错误的,因为每个线程都会有自己的栈,栈里面的变量是不共享的,只有堆区里面变量才有可能是线程共享的。

解决方案 »

  1.   

    如果你想多个线程同步操作写文件这样的一个动作,可以将写动作用synchronized关键字,
    public synchronized void write(){
    FileWriter fw = null;
    try{
    fw = new FileWriter(new File("file.txt"));
    for(int j=0;j<100000;j++){
    fw.write(j+“ ”+Thread.currentThread().getName()+'\n');
    }
    fw.close();
    ..
    }
    然后在各个线程运行方法体中调用write方法,这样可以保证写文件的同步性。
      

  2.   

    你用:fw.write(j+“ ”+this.getName()+'\n');试试.