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,指的是同一个对象吗??
{
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,指的是同一个对象吗??
解决方案 »
- 谁有<<最新java2核心技术卷II:高级特性(V1,3)5E>>的源代码啊
- 菜鸟求助!将arraylist中的查询结果插入数据库该怎么做啊
- 为什么提示框会出现两次?
- primitive类型的数据是指常量吗?
- 对util.concurrent包的PooledExecutor讨论
- !!!<applet>中的jar怎么设???????!!!!!!!!!!!!!!!!!!
- 100分请教ftpclient类文件上传问题~~~
- 请问有没有把标准C转换成java源代码的工具啊?
- 对表格单元setValueA以后为什么不显示单元格的改变?
- 问个jframe的问题,请问如何在后台弹出jframe,也就是一创建就是在其他窗口的后面?
- 一个字符串匹配
- 循环把我弄糊涂了
这4个线程作用于同一个j。
也就是想让这4个线程作用于同一个对象。
我也是写的时候不自觉的就在内部类的构造函数那写上了this。
过后才感觉,这个this指的是什么?
我自己都迷糊。
先创建一个外部类的对象: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。
this是指当前对象
如果想在内部类中使用外部的当前对象
这样
外部类名.this;