java 多线程Thread和Runnable的区别

时间:2022-01-14 00:06:01

如果一个类继承Thread,则不适合资源共享。但是如果实现了Runable接口的话,则很容易的实现资源共享

实现Runnable接口比继承Thread类所具有的优势:
1. 适合多个相同的程序代码的线程去共享同一个资源。

2.避免了单继承的局限性

一个类只能继承一个类(一个人只能有一个亲爹),类继承了Thread类就不能继承其他的类
实现了Runnable接口,还可以继承其他的类,实现其他的接口 

DEMO:

实现类,可以复用runnable方法 

方法1:

java 多线程Thread和Runnable的区别

方法2:

java 多线程Thread和Runnable的区别

测试类:

实现runbale方法

java 多线程Thread和Runnable的区别

测试runnable2 方法

java 多线程Thread和Runnable的区别

3. 增加程序的健壮性,实现解耦操作,代码可以被多个线程共享,代码和线程独立。

实现Runnable接口的方式,把设置线程任务和开启新线程进行了分离(解耦)
实现类中,重写了run方法:用来设置线程任务
创建Thread类对象,调用start方法:用来开启新线程

4. 线程池只能放入实现Runable或Callable类线程,不能直接放入继承Thread的类。

  在java中,每次程序运行至少启动2个线程。一个是main线程,一个是垃圾收集线程。因为每当使用
java命令执行一个类的时候,实际上都会启动一个JVM,每一个JVM其实在就是在操作系统中启动了一个进
程。