A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马伟恒 中级黑马   /  2012-4-18 16:19  /  1628 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class MyThread011 extends Thread{


public
MyThread011(String name){


super(name);


}


public void run(){


System.out.println(Thread.currentThread().getName()+"-->正在
运行
");


}

}

public class Demo01 {


public static void main(String[] args) {


MyThread011 m1=new MyThread011("线程A");


MyThread011 m2=new MyThread011("线程B");


m1.start();


m2.start();


}

}

==========================================================================================

class MyThread011 implements Runnable{


public void run(){


System.out.println(Thread.currentThread().getName()+"-->正在运行");


}

}

public class Demo01 {


public static void main(String[] args) {


MyThread011 m1=new MyThread011();


Thread t1=new Thread(m1,"线程A");


Thread t2=new Thread(m1,"线程B");


t1.start();


t2.start();


}

}

/*

MyThread011 m1=new MyThread011("线程A");

MyThread011 m2=new MyThread011("线程B");

---------------------------------------

MyThread011 m1=new MyThread011();

Thread t1=new Thread(m1,"线程A");

Thread t2=new Thread(m1,"线程B");

主要是这两段话,得到的线程A和线程B是一样的吗?
这两段话,得出来的线程A和线程B,到底有什么区别?


2 个回复

倒序浏览
不是一样的,你new两个线程,这两个都是独立的线程。现在运行的程序中有3个线程,一个是mian一个是t1,一个是t2;其实这段代码主要是老师上课为了演示多线程而举得例子,他们的功能都是打印;多线程的出现的原因之一,是为了提高效率。
回复 使用道具 举报
其实你说的就是继承Tread和实现Runnable接口的问题。
无疑两段代码都是多线程的使用方法的第一种。而使用Runnable方法我们可以看到Runnable方法中并没有Start方法,而是调用了父类的Start.
其实Runnable是Tread类的子类。并且Runnable是静态的。
这段代码只是体现了,当继承Tread类实现多线程时。使用Runnable接口也可以实现。
但实际开发中,更多的使用是Runnable.他可以避免继承的局限性,从而实现多个接口,避免了单一的继承。
适用资源的共享。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马