Java多线程与并发-8.3 Thread和Runnable的关系

Thread是一个类,而Runnable是一个接口。Thread实现了Runnable接口。Runnable里面只有一个抽象的run()方法,也就是说Rnnable这个接口并没有具备多线程的特性,它是依赖Thread里面的start()方法去创建一个子线程,再在这个子线程里面再去调用Thread实现好了的run()方法,去执行相应的业务逻辑,才能让Thread这个类具备多线程的特性。

下面对Thread和Runnable分别做下测试
1,Thread测试
先创建一个线程类
在这里插入图片描述
然后创建一个测试类:
在这里插入图片描述
2,Runnable测试
Runnable没有start()方法,它怎么实现多线程呢?
只有Thread有start()方法,而Thread类源码里面有一个构造函数,是可以传入Runnable的子类实例的,也就是说,我们可以通过Thread类,来启动Runnable来实现多线程。
在这里插入图片描述
先创建一个类MyRunnable,实现Runnable接口,
在这里插入图片描述
然后创建一个测试类,去调用MyRunnable:
在这里插入图片描述
Thread和Runnable的关系:
(1)Thread是实现了Runnable接口的类,通过start,给Runnable的run方法赋值了多线程的特性;
(2)因Java类的单一继承原则,在实际开发过程中,为了提升系统的可扩展性,往往推荐通过使业务类实现Runnable接口,将业务逻辑封装在run方法里,便于后续给普通类赋上多线程的特性。

猜你喜欢

转载自blog.csdn.net/tanwenfang/article/details/92393780
今日推荐