Thread类和Runnable接口实现方式的区别

 我来答
黑马程序员
2017-09-08 · 改变中国IT教育,我们正在行动
黑马程序员
黑马程序员为大学毕业后,有理想、有梦想,想从事IT行业的年轻人改变自己的命运。黑马程序员成就IT黑马
向TA提问
展开全部
1 线程接口的实现有两种方式,第一:继承Thread类;第二:实现Runnnable接口;
2 两种创建方式上的不同:
建线程的第一种方式:继承Thread ,由子类复写run方法。
1,定义类继承Thread类;
2,目的是复写run方法,将要让线程运行的代码都存储到run方法中;
3,通过创建Thread类的子类对象,创建线程对象;
4,调用线程的start方法,开启线程,并执行run方法。
创建线程的第二种方式:实现一个接口Runnable。
1,定义类实现Runnable接口。
2,覆盖接口中的run方法(用于封装线程要运行的代码)。
3,通过Thread类创建线程对象;
4,将实现了Runnable接口的子类对象作为实际参数传递给Thread类中的构造函数。
3 下面是具体的代码展示两种方式创建线程:
继承Thread类创建线程的代码:
public class ThreadDemo {
public static void main(String[] args) {
// ThreadTest是继承了Thread类
ThreadTest t1=new ThreadTest (" 1");
t1.start();
}
}

//线程类 继承Thread类
public class ThreadTest extends Thread {
private int ticket=100;//每个线程都拥有100张票
public ThreadTest (){}
public ThreadTest (String name){
super(name);
}
@Override
public void run() {
while(ticket>0){
System.out.println(Thread.currentThread().getName());
}
}
}

实现Runnable 接口的方式:
class Person{

private int sum;
public void add(int n){

sum+=n;
System.out.println("sum="+sum);

}

}
//Person类实现Runnable接口
class Person implements Runnable{

private Person b=new Person ();
public void run(){
synchronized(b){
for(int x=0;x<3;x++)
{
b.add(100);

}
}
}
}
4 实际开发中一般使用Runnable接口的方式比较多,因为:
通过继承Thread类的方式,可以完成多线程的建立。但是这种方式有一个局限性,如果一个类已经有了自己的父类,就不可以继承Thread类
而实现Runnable接口可以避免单继承的局限性。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式