class Main
{

public static void main(String[] args)
{
new Thread1("one","two").newInner();

}
}class Thread1 implements Runnable
{
int j = 0;
Thread1(String s1,String s2)
{
new Thread(this,s1).start();
new Thread(this,s2).start();

}
public void run()
{
for(int i = 0;i<50;i++)
{
System.out.println(Thread.currentThread().getName()+" "+j++);
}
}
Thread2 newInner()
{
return new Thread2("three","four");
} class Thread2 implements Runnable
{
  Thread2(String s1,String s2)
  {
new Thread(this,s1).start();       //请问这个this指谁
        new Thread(this,s2).start();
          }
          public void run()
          {
          for(int i = 0;i<50;i++)
          {
           System.out.println(Thread.currentThread().getName()+" "+j--);
          }
          }

}
}
请问外部类那个this和内部类那个this,指的是同一个对象吗??

解决方案 »

  1.   

    这个this所指向的对象是一个Thread2类型
      

  2.   

    我就是建立4个线程。
    这4个线程作用于同一个j。
    也就是想让这4个线程作用于同一个对象。
    我也是写的时候不自觉的就在内部类的构造函数那写上了this。
    过后才感觉,这个this指的是什么?
    我自己都迷糊。
      

  3.   

    this在那个类定义中使用,那么它就是指这个类的对象,不用迷糊
      

  4.   

    内部类对外部类的引用是用的outerClass.this,也就是Thread.this
      

  5.   

    是操作了变量j,那Outer.object和Inner.object都包含一份j的拷贝,还是这两个对象共享同一个j.
      

  6.   

    共享一个j,不可能是拷贝,如果是拷贝的话,j是基本变量,拷贝不会影响到原来j的值
      

  7.   

    答:设外部类为:Outer,它内部定义了一个非static型的内部类Inner,则:
    先创建一个外部类的对象:Outer out_o=new Outer();
    然后才能由这个对象out_o来创建一个内部类Inner的对象:Outer.Inner inn_o=out_o.new Inner();
    这时,这个内部类对象inn_o内部自动有一个数据成员(程序中访问的名字是:Outer.this),用于指向创建它那个外部类对象out_o,正是通过这个:Outer.this,对象inn_o才能访问out_o中的成员。因此:内部类对象要访问自己的数据成员a,可用:this.a,而要访问外部类对象中的数据成员a,则用:Outer.this.a。
      

  8.   

    不是啊 !要想用外部 类那就得用外部类名称.this+变量.
      

  9.   

    不是指同一个对象
    this是指当前对象
    如果想在内部类中使用外部的当前对象
    这样
    外部类名.this;