浅谈java中继承Thread与实现Runable的区别

    java中现实多线程可以继承Thread,也可以实现Runable;

    一般的用法都是重写或实现run方法,然后用Tread调用start方法(注意,只有Thread有start方法;Runable是没有start方法的);

    在我们通常简单的用多线程时尽量通过实现Runable的方式;因为实现R相对于继承T有如下有点:

    1. 继承了T后不能再继承别的类,但实现R的同时可以再继承其他某个类,然而两者都实现了简单的多线程,所以R有此优势;

    2. 实现了R后可以资源共享,而继承了T后不能资源共享(共享指的是共同操作类的成员变量(当然是非静态变量,静态的肯定都能共享));因为继承了T后每次使用时都创建新的类,而实现R后每次使用时创建了新的Thread,但创建这些Thread是可以用同一个Runable,所以可以共享;此乃第二个有点;

    然而继承Thread不可能一无是处,否则就没必要存在这种方式了;

    事实上Runable提供了run方法(Thread的run也是实现了Runable),而Thread中是有各种线程实现、管理的方法,start是其中一个方法,用来提供启动线程的方法;

    所以,当现有的多线程方式Thread不能满足你的要求,你需要修改或优化Thread时,必须要继承Thread了,因为很多对线程相关的的东西是在Thread中实现的;这个是Thread存在的必要,也即优势;

    总之,想要继承别的类,或想要简单共享资源就用Runable,(当然,我觉得Thread通过别的方式应该也可以实现资源共享的);想要优化线程时可以继承Thread; 一般情况用Runable,没有特定需求是两者都可用;

OVER;

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值