class MyThread implements Runnable{ // 实现Runnable接口,作为线程的实现类
private String name ; // 表示线程的名称
public MyThread(String name){
this.name = name ; // 通过构造方法配置name属性
}
public void run(){ // 覆写run()方法,作为线程 的操作主体
for(int i=0;i<10;i++){
System.out.println(name + "运行,i = " + i) ;
}
}
};
public class RunnableDemo01{
public static void main(String args[]){
MyThread mt1 = new MyThread("线程A ") ;  // 实例化对象
MyThread mt2 = new MyThread("线程B ") ;  // 实例化对象
Thread t1 = new Thread(mt1) ; // 实例化Thread类对象
Thread t2 = new Thread(mt2) ; // 实例化Thread类对象
t1.start() ; // 启动多线程
t2.start() ; // 启动多线程
}
};
在这“Thread t1 = new Thread(mt1) ;”调用了Thread的一个构造方法“Thread(Runnable target) ”,构造方法是用之前不用先声明么?比如MyThread构造方法已经在类中声明过了,是不是java自带的构造方法不用声明就可以直接是用?

解决方案 »

  1.   

    这个和多态有关系么,这里又不涉及继承,明确告诉楼主:调用构造方法是不用什么声明的。你说的“MyThread构造方法已经在类中声明过了”是不是指你在MyThread类中定义过了?而Thread 类的构造方法也在Thread类中定义过了,只不过Thread类是预先编写好的类库,如你所说:“java自带的构造方法”。
      

  2.   

    不用先申明的。启动多线程应该是t.run()方法。
      

  3.   


    是不是哦??是run()?我刚刚学过啊 不要把我带沟了啊 我记得是start()方法的嘛  
    貌似楼主那个是多态的吧  
    你实现了Runnable接口,建立了子类对象而已嘛。
    还希望高人来解释
      

  4.   

    还想问下run()和start()到底有什么区别
      

  5.   

    run相当于你在没人的时候说:“老婆 我爱你”,谁都听不见,说完就完了。start相当于你走到你老婆旁边,左准备右准备,准备半天,说出我爱你,你老婆听到了后,有一系列动作和反映,这些动作过程是独立于你的