线程的创建方式比较

2021-01-22 19:14

阅读:706

线程的创建方式:
1:通过继承Thread类来创建线程。
技术图片
2:通过实现Runnable接口来创建线程。
技术图片
然后在Main方法里分别创建通过继承Thread类和实现Runnable接口的线程,如下图:
技术图片
我们可以看见:通过继承Thread类的创建线程是直接new 一个对象的。而通过实现接口的是new 一个对象之后再在对象外面包一层Thread()。
注意!!! ****两种方法都对run()方法进行了重写,实际上,Thread类就已经实现了Runnable接口,Thread类里的run()方法就是对Runnable接口中的run()方法的重写。run()方法的最初来源其实就是Runnable接口里的抽象方法。而start()的最初来源是Thread这个类里面的。线程只有通过调用start()方法才能从新建状态到达就绪状态然后等待cpu的调度。Thread和Runnable接口都是在lang包里。

总结:
采用继承Thread类方式:
(1)优点:编程简单,如果需要访问当前线程,无需使用Thread.currentThread()方法,直接使用this,即可获取当前
线程。
(2)缺点:因为线程类已经继承了Thread类,所以不能再继承其他的父类。
采用实现Runnable接口方式:
(1)优点:线程类只是实现了Runable接口,还可以继承其他类。在这种方式下,可以多个线程共享同一个目标对象,
所以非常适合多个相同的线程来处理同一份资源的情况,从而可以将cpu代码和数据分开,形成清晰的模型,较好地体现
了面向对象的思想。
(2)缺点:编程稍微复杂,如果需要访问当前线程,必须使用Thread.currentThread()方法。


评论


亲,登录后才可以留言!