标签:size line 方式 current 面向 适合 数据 code runable
线程的创建方式:
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()方法。
标签:size line 方式 current 面向 适合 数据 code runable
原文地址:https://www.cnblogs.com/xm970829/p/12888428.html