如下代码:public class Demo02
{
public static void main(String args[]){
MyThread mt = new MyThread(); //如果这儿的MyThread换成Runnable?
Thread t = new Thread(mt);
t.start();
for (int i=0;i<30 ;i++ )
{
System.out.println( "main在执行!");
}
}
}class MyThread implements Runnable{

public void run(){
for (int i=0;i<30 ;i++ )
{
System.out.println( "MyThread在执行!");
}
}
}问题:如果红色部分的MyThread换成Runnable  会有多大区别? 

解决方案 »

  1.   

    就实现功能而言没有区别,但是如果改为Runnable,在项目种,程序扩展性会更好,可以灵活修改线程实现类实现不同的业务逻辑
      

  2.   

    MyThread mt = new MyThread(); //如果这儿的MyThread换成Runnable
    将MyThread 换成Runnable,就是将mt定义为Runnable类型的一个引用;如果Runnable中有些变量被MyThread隐藏了,那么通过Runnable mt = new MyThread(); 就可以看见并使用runnable接口中的被隐藏的变量了!另外,即使 Runnable mt = new MyThread();  那么mt中实际存储还是MyThread类型的!可以通过此方法判断一下 :
    if (mt instanceof MyThread){
    System.out.println( "mt实质还是一个MyThreda对象"); }