public class ThreadClashDemo2 implements Runnable{
private void readString(String content)throws Exception
{
String str=Thread.currentThread().getName();
System.out.println("\n"+str+"进入了readString()方法。");
for(int i=0;i<content.length();i++)
{
System.out.print(content.charAt(i));
Thread.sleep(100);
}
System.out.println("\n"+str+"退出了readString()方法。"); }
public void run()
{
try{
readString("我一边喝咖啡,一边学习java多线程编程!");
}catch(Exception e){}
}
public static void main(String[] args){
//Runnable r=new ThreadClashDemo2();
ThreadClashDemo2 r=new ThreadClashDemo2();
Thread threadA=new Thread(r,"threadA");
Thread threadB=new Thread(r,"threadB");
threadA.start();
threadB.start();
}
}以上红色标志的地方替换有什么差别,我运行后结果一样,原因是什么?谢谢

解决方案 »

  1.   

    ThreadClashDemo2 实现了接口Runnable,
    实例化都是用的
    new ThreadClashDemo2();
    当然是一样的了
      

  2.   

    前一句,情况下在接下来的代码可通过r这个句柄只能用Runnable声明的方法,后一句能用ThreadClashDemo2和Runnable的方法。
      

  3.   

    >>public class ThreadClashDemo2 implements Runnable
    关键字【implements】说明类ThreadClashDemo2实现了接口Runnable,
    接口不能被实例化,所以只能使用实现借口的类来实例化,而此时你调用接口的方法和属性时,实际上是调用实现类的方法和属性,所以楼主所说的两处结果是一样的。类推,实现类必须实现接口的所以方法和属性。
      

  4.   

    THREAD实现了Runnable接口
    如果LZ还没搞懂 那建议在弄明白多态前 先别搞多线程