您的位置 首页 java

跟我学JAVA多线程之二:多线程的实现方式

跟我学JAVA多线程之二:多线程的实现方式

上篇文章和大家讲解了 线程 的生命周期,今天和大家讲解一下 多线程 的实现方式。

在java中,要想实现多线程,有两种手段,一种是继承Thread类,另外一种是实现Runnable接口。

一、继承java.lang.Thread类

继承Thread类是比较常用的一种方法,话不多说,直接上代码。

跟我学JAVA多线程之二:多线程的实现方式

分别运行两次结果如下(结果是随机的):

跟我学JAVA多线程之二:多线程的实现方式

不过大家需要注意的是,start()方法的调用,并不是立即执行多线程的,而是仅仅把线程的状态改变为可执行状态(runnable),什么时候运行则是由操作系统决定的。

二、实现java.lang.runnable接口

实现runnable接口非常常见,,下面请看实例:

跟我学JAVA多线程之二:多线程的实现方式

分别运行两次的结果如下(结果是随机的):

跟我学JAVA多线程之二:多线程的实现方式

上述案例实现了Runnable接口,run方法是多线程程序的一个约定。所有的多线程代码都在run方法里面。通过上述两个案例,我们不难发现其实所有的多线程代码都是通过Thread的start方法来运行的,所以多线程不管是继承Thread类还是实现Runnable接口,最终还是通过Thread对象的API来控制线程的。那么我们平时都用哪种方式来实现呢?

在实际开发中,只要是多线程肯定是以实现Runnable接口为主,因为实现Runnable接口比继承Thread类有如下好处:

  • 避免点继承的局限,一个类可以继承多个接口。

  • 适合于资源的共享

实现Runnable接口比继承Thread类所具有的优势:

1:适合多个相同的程序代码的线程去处理同一个资源

2:可以避免java中的单继承的限制

3:增加程序的健壮性,代码可以被多个线程共享,代码和数据独立

4: 线程池 只能放入实现Runnable或callable类线程,不能直接放入继承Thread的类

这也和我们平时开发都是面向接口开发的原因一样,可以 解耦 ,而且易于程序的拓展和维护。

其实我们查看源代码可以发现Runnable接口和Thread之间的联系:

public class Thread extends Object implements Runnable

Thread类也是Runnable接口的子类。

这篇只能说是java多线程的一个入门,不过先把最基本的掌握好,才能更上一个台阶。最后祝大家工作顺利,天天开心!!!

文章来源:智云一二三科技

文章标题:跟我学JAVA多线程之二:多线程的实现方式

文章地址:https://www.zhihuclub.com/200136.shtml

关于作者: 智云科技

热门文章

网站地图