![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java并发编程
文章平均质量分 94
是田同学啊
一只小菜鸟
展开
-
Java中公平锁、递归锁、自旋锁、独占锁和共享锁的代码演示
文章目录1、公平锁和非公平锁2、可重入锁(递归锁)3、自旋锁3.1 手写一个自旋锁4、独占锁、共享锁、互斥锁1、公平锁和非公平锁公平锁是指 多个线程按照申请锁的顺序来获取锁,根据先来后到的规则进行排队等候 。非公平锁是指 多个线程获取锁的顺序并不是按照申请锁的先后顺序,有可能后申请锁的线程比先申请锁的线程优先获得锁 ,在高并发环境下,有可能造成优先级反转或者饥饿现象。饥饿现象:长时间未获取到锁举例:ReentrantLock 可以指定构造函数参数来创建公平锁或者非公平锁,默认是非公平锁。//非原创 2021-02-09 23:41:05 · 238 阅读 · 0 评论 -
面试官:ArrayList是线程安全的吗?如果不是,请举例说明?
文章目录1、ArrayList线程不安全演示示例2、解决ArrayList线程不安全方案2.1 采用Vector类2.2 通过Collections类构造同步的List2.3 采用 CopyOnWriteArrayList类3、HashSet3.1 解决方案3.2 CopyOnWriteArraySet3.3 HashSet 面试点补充4、HashMap4.1 解决方案1、ArrayList线程不安全演示示例/** * @ClassName: CollectionDemo1 * @Auther: 戏原创 2021-02-07 22:53:28 · 5464 阅读 · 1 评论 -
Java并发编程之CAS(比较并交换)
文章目录1、compareAndSet方法2、Unsafe类3、CAS是什么4、CAS优缺点5、CAS存在的ABA问题5.1 ABA的产生5.2 原子引用5.2 ABA的解决办法1、compareAndSet方法先以AtomicInteger为例看源码:/** * Atomically sets the value to the given updated value * if the current value {@code ==} the expected value.原创 2021-02-06 21:20:39 · 297 阅读 · 0 评论 -
Java关键字之volatile
文章目录1、volatile概念:2、volatile三大特性2.1 保证可见性1.2 不保证原子性1.3 禁止指令重排3、volatile使用举例:1、volatile概念:volatile是Java虚拟机提供的轻量级的同步机制2、volatile三大特性2.1 保证可见性从可见性分析需要引入JMM内存模型概念。JMM(Java Memory Model)本身是一种抽象的概念,并不真实存在,他描述的时一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)原创 2021-02-05 20:51:28 · 224 阅读 · 4 评论