多线程中synchronized与ThreadLocal的使用区别

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

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

Lock与synchronized的区别

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容