黑马程序员技术交流社区

标题: 多线程代码中的问题 [打印本页]

作者: 冯瑞君老师    时间: 2011-12-19 14:14
标题: 多线程代码中的问题
class ThreadTest{
public static void main(String[] args){

new Thread()//我不明白这个地方,告我下这个地方的全写是怎么写的。
{
public void run()
for(int x=0;x<100;x++){
s.o.p()
}
}
}.start();

for(int x=0;x<100;x++){
s.o.p()
}
for(int x=0;x<100;x++){
s.o.p
}
作者: 刘基军    时间: 2011-12-19 14:31
匿名内部类,
实际就是创建一个{【继承了Thread类并将run()方法进行了重写】的子类}的实例,然后该实例调用了start()方法,来启动线程。
等价于:
  1. class ThreadTest extends Thread
  2. {
  3.         public void run()
  4.         for(int x=0;x<100;x++)
  5.         {
  6.                 s.o.p()
  7.         }
  8. }

  9. ThreadTest tt = new ThreadTest();
  10. tt.start();
复制代码
使用匿名内部类的方法,主要可以简化书写。
作者: 马德强    时间: 2011-12-19 14:33
这是匿名内部类的使用。
也可以这样写:
Thread t =new Thread(){
  public void run()
{
     // do sth...
}
};
t.start();
作者: 应国炎    时间: 2011-12-19 14:52
是一个匿名内部类
作者: 为梦而战    时间: 2011-12-19 15:10
Thread t1=new Thread()
{
public void run()
for(int x=0;x<100;x++){
s.o.p()

};
t1.start.
作者: 曾运    时间: 2011-12-19 16:12
本帖最后由 曾运 于 2011-12-19 16:13 编辑

这是一个匿名内部类:
1,匿名内部类其实就是内部类的简写格式。
2,定义匿名内部类的前提:内部类必须是继承一个类或者实现接口。
3,匿名内部类的格式:  new 父类或者接口(){定义子类的内容}
4,其实匿名内部类就是一个匿名子类对象。而且这个对象有点胖。可以理解为带内容的对象。如new Thread(){  这里重写Thread中的run()方法  }
new Thread(){  这里重写Thread中的run()方法  }       -----》是一个对象,一般只用一次,没有引用指向该对象,该对象继承自Thread类,所以能调用start()方法。
  1. //其实该段代码相当于:

  2. Thread t=new Thread()
  3. {
  4.     public void run()

  5.         for(int x=0;x<100;x++)

  6.         {

  7.                System.out.println(x);

  8.         }

  9. };

  10. t.start();
复制代码

作者: 刘健    时间: 2011-12-19 20:11
匿名内部类,把可以单独提出来的线程写在了类里




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2