Thread和Runable的解读误区

     了解知识点并不一定是最重要的,而如何能正确的应用才是最考验对知识点的理解。关于这两种线程的问题,一直以来知识点的误区在于Thread是同步的而Runable是异步的,即同样去处理一个资源,每个Thread会把这个资源单独算一份,而Runable是共用一份,包括很多培训机构讲课就是这么讲的,这几天重新翻看这个知识点,发现以前的这种想法是错误的。

       为什么要研究线程,主要目的在于可以构造多线程去处理任务,这无疑使处理事情的效率吨量上升,办事快人人都喜欢,自然都喜欢研究它。就最新的温习结果来看,两者区别主要在于,Thread通过继承的方式使用,而Runable通过接口实现的方式使用,其他无所谓同步异步的区别,也无所谓内部封装方法不同,也就是说,两者用起来几乎是没有差别的。因为Thread内部本质上也是实现的Runable接口,调用的也是Runable的run()方法,只是对其重写了而已,而实现Runable接口也是一样的调用重写的run()方法,也就是说两者调用方法的源头是一样的,因此两者在使用上没有本质区别。那如何保证单线程和多线程使用的时候同步的问题呢?单个线程:对共有资源加static关键字,对要执行的资源对象加锁,synchonized、lock都可以;多个线程:对共有资源加线程可见性关键字volatile,或者使用原子化的包装类,如AtomicInteger,AtomicLong,AtomicAarray等,然后再对要执行的资源对象加锁,synchonized、lock等。

     以上是个人对该知识点的继承程度,以前觉得是对的,现在未必,日子在流逝,知识的理解也在发生变化,有时间,重新梳理一下旧的知识点,也许会发现新的不同。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值