美文网首页
多线程中synchronized与ThreadLocal的使用区

多线程中synchronized与ThreadLocal的使用区

作者: 榕城歌者 | 来源:发表于2019-06-14 17:43 被阅读0次

    开发中一些关于多线程的思考:
    Android开发过程其实并没有太多的线程并发的问题,当然也会有所遇到。比如关于用户状态,每一次网络请求都需要用户的信息,当然,用户信息初始化之后,一般都不会再此初始化,因此可以选择读多写少的策略;而写多读少在客户端并不常见,服务端遇到的情况比较多,如网上购物的时候,某一件商品的数量,每一次的购买行为都会去修改商品的数量。
    选择不同的策略,当然也用不同的方案处理。

    synchronized
    特点:简单、java关键字、在jvm层面上、少量同步、无法判断锁的状态
    缺点:大量同步,竞争激烈的情况下,会造成明显的性能下降,大部分的线程都在等待资源的释放,因为无法获得锁的状态,只能陷入等待状态。
    Lock
    特点:类、手动释放锁、大量同步、可以判断锁的状态
    缺点:因为可以通过tryLock的方法去判断锁的状态,所以线程可以不用进入等待的状态。但是使用的时候在finally中必须要释放锁,不然会造成死锁的状态。

    Lock与synchronized的区别

    资源在初始化之后,其它线程的访问不会去修改最初的版本,享资源改变也不会影响到其它线程的使用。
    优先选择使用ThreadLocal
    ThreadLocal

    相关文章

      网友评论

          本文标题:多线程中synchronized与ThreadLocal的使用区

          本文链接:https://www.haomeiwen.com/subject/ojgpfctx.html