线程同步的关键字_线程的同步和异步的区别

线程同步的关键字_线程的同步和异步的区别Java线程同步的四种方式详解(建议收藏)Java线程同步属于Java多线程与并发编程的核心点,需要重点掌握,下面我就来详解Java线程同步的4种主要的实现方式@mikechen什么是线程同步当使用多个线程来访问同一个数据时,将会导致数据

Java线程同步的四种方式详解(建议收藏)   
线程同步的关键字_线程的同步和异步的区别
线程同步的关键字_线程的同步和异步的区别   Java线程同步属于Java多线程与并发编程的核心点,需要重点掌握,下面我就来详解Java线程同步的4种主要的实现方式@mikechen   什么是线程同步   当使用多个线程来访问同一个数据时,将会导致数据不准确,相互之间产生冲突,非常容易出现线程安全问题,如下图所示:   
线程同步的关键字_线程的同步和异步的区别
线程同步的关键字_线程的同步和异步的区别   比如多个线程都在操作同一数据,都打算修改商品库存,这样就会导致数据不一致的问题。   线程同步的真实意思,其实是“排队”:几个线程之间要排队,一个一个对共享资源进行操作,而不是同时进行操作。   所以我们用同步机制来解决这些问题,加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用,从而保证了该变量的唯一性和准确性。   线程同步的几种方式   
线程同步的关键字_线程的同步和异步的区别
线程同步的关键字_线程的同步和异步的区别   1、使用synchronized关键字   这种方式比较灵活,修饰一个代码块,被修饰的代码块称为同步语句块。   其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象,如下格式:   通常没有必要同步整个方法,使用synchronized代码块同步关键代码即可。   具体的示例如下:   如果你还想深入了解Synchronized的底层原理,可以看 Synchronized的实现原理详解(看这篇就够了)   2.使用ReentrantLock   ReentrantLock类是可重入、互斥、实现了Lock接口的锁,它与使用synchronized方法具有相同的基本行为和语义,并且扩展了其能力。   synchronized 与 Lock 的对比   ReentrantLock是显示锁,手动开启和关闭锁,别忘记关闭锁;   synchronized 是隐式锁,出了作用域自动释放;   ReentrantLock只有代码块锁,synchronized 有代码块锁和方法锁;   使用 ReentrantLock锁,JVM 将花费较少的时间来调度线程,线程更好,并且具有更好的扩展性(提供更多的子类);   优先使用顺序:   ReentrantLock> synchronized 同步代码块> synchronized 同步方法   3.使用原子变量实现线程同步   为了完成线程同步,我们将使用原子变量(Atomic*开头的)来实现。   比如典型代表:AtomicInteger类存在于java.util.concurrent.atomic中,该类表示支持原子操作的整数,采用getAndIncrement方法以原子方法将当前的值递加。   具体示例如下:   4.ThreadLocal实现线程同步   如果使用ThreadLocal管理变量,则每一个使用该变量的线程都获得该变量的副本,副本之间相互独立,这样每一个线程都可以随意修改自己的变量副本,而不会对其他线程产生影响,从而实现线程同步。   具体代码示例如下:   以上   98.5%看过架构技术合集分布式架构设计从0到1全部合集(附:分布式、微服务、高并发等大型网站架构)JVM(Java虚拟机)从0到1全部合集(建议收藏)Java多线程与并发从0到1全部合集(面试必看)Redis分布式缓存从0到1全部合集(进阶必看)Spring开发框架从0到1全部合集(建议收藏)MySQL数据库从0到1全部合集(建议收藏)更多JAVA资料我的公主号{多变爱编程}
线程同步的关键字_线程的同步和异步的区别
线程同步的关键字_线程的同步和异步的区别

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/38276.html

(0)
上一篇 2024年 9月 8日 下午6:42
下一篇 2024年 9月 8日

相关推荐

关注微信