两种线程创建方式的区别

创建一个新的线程有两种方式,第一种方式为通过继承Thread类,并实现Thread类中的run()方法。第二种创建线程的方式是通过实现Runnable接口来创建一个新的线程。
下面总结一下两种创建线程方式的区别:

  1. 从面向对象编程的角度来看:通过继承Thread类创建线程使用的是基于继承的技术,而第二种方式是当然就是给予组合的技术来实现的。由于组合相对于继承来说,类与类之间的耦合性更低,所以它也更加的灵活。因此,组合是更为优先考虑的技术。
  2. 从线程共享的角度来看:通过实现接口创建线程的方式意味着多个线程实例可以共享同一个Runnable实例。这种情况下可能会导致线程安全问题。
  3. 从对象的创建成本的角度来说:java中的线程实例是一个特殊的Runnable实例,因为在创建它的时候java虚拟机会为其分配调用栈空间、内核线程等资源。因此创建一个线程实例比创建一个Runnable实例的代价稍微昂贵一些。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值