java多线程技术优点_《Java多线程编程核心技术(第2版)》 —1.2.6 使用Runnable接口实现多线程的优点...

1.2.6 使用Runnable接口实现多线程的优点

使用继承Thread类的方式来开发多线程应用程序在设计上是有局限性的,因为Java是单根继承,不支持多继承,所以为了改变这种限制,可以使用实现Runnable接口的方式来实现多线程技术。下面来看使用Runnable接口必要性的演示代码。

创建测试用的项目moreExtends,首先来看业务A类,代码如下:

package service;

public class AServer {

public void a_save_method() {

System.out.println("a中的保存数据方法被执行");

}

}

再来看业务B类,代码如下:

package service;

public class BServer1 extends AServer,Thread

{

public void b_save_method() {

System.out.println("b中的保存数据方法被执行");

}

}

BServer1.java类不支持在extends关键字后写多个类名,即Java并不支持多继承的写法,所以在代码“public class BServer1 extends AServer, Thread”处出现如下异常信息:

Syntax error on token "extends", delete this token

这时就有使用Runnable接口的必要性了,创建新的业务B类,代码如下:

package service;

public class BServer2 extends AServer implements Runnable {

public void b_save_method() {

System.out.println("b中的保存数据方法被执行");

}

@Override

public void run() {

b_save_method();

}

}

程序不再出现异常,通过实现Runnable接口,可间接地实现“多继承”的效果。

另外,需要说明的是Thread.java类也实现了Runnable接口,如图1-17所示。

1581140460930884.png

图1-17 Thread.Java类实现Runnable接口

这意味着构造函数Thread(Runnable target)不仅可以传入Runnable接口的对象,而且可以传入一个Thread类的对象,这样做完全可以将一个Thread对象中的run()方法交由其他线程进行调用,示例代码如下:

public class Test {

public static void main(String[] args) {

MyThread thread = new MyThread();

//MyThread是Thread的子类,而Thread是Runnable实现类

//所以MyThread也相当于Runnable的实现类

Thread t = new Thread(thread);

t.start();

}

}

在非多继承的情况下,使用继承Thread类和实现Runnable接口两种方式在取得程序运行的结果上并没有什么太大的区别,一旦出现“多继承”的情况,则采用实现Runnable接口的方式来处理多线程的问题是很有必要的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值