![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java锁
陌溪教你学编程
公众号: 陌溪教你学编程,字节跳动后台开发,开源项目蘑菇博客作者
展开
-
【JUC】什么是Java中的自旋锁
Java锁之自旋锁 自旋锁:spinlock,是指尝试获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁,这样的好处是减少线程上下文切换的消耗,缺点是循环会消耗CPU 原来提到的比较并交换,底层使用的就是自旋,自旋就是多次尝试,多次访问,不会阻塞的状态就是自旋。 优缺点 优点:循环比较获取直到成功为止,没有类似于wait的阻塞 缺点:当不断自旋的线程越来越多的时候,会因为执行while循环...原创 2020-03-18 21:57:48 · 159 阅读 · 0 评论 -
【JUC】 什么是可重入锁和递归锁
可重入锁和递归锁ReentrantLock 概念 可重入锁就是递归锁 指的是同一线程外层函数获得锁之后,内层递归函数仍然能获取到该锁的代码,在同一线程在外层方法获取锁的时候,在进入内层方法会自动获取锁 也就是说:线程可以进入任何一个它已经拥有的锁所同步的代码块 ReentrantLock / Synchronized 就是一个典型的可重入锁 代码 可重入锁就是,在一个method1方法中加入一把锁...原创 2020-03-18 21:55:53 · 173 阅读 · 0 评论 -
【JUC】什么是Java中的读写锁
独占锁(写锁) / 共享锁(读锁) / 互斥锁 概念 独占锁:指该锁一次只能被一个线程所持有。对ReentrantLock和Synchronized而言都是独占锁 共享锁:指该锁可以被多个线程锁持有 对ReentrantReadWriteLock其读锁是共享,其写锁是独占 写的时候只能一个人写,但是读的时候,可以多个人同时读 为什么会有写锁和读锁 原来我们使用ReentrantLock创建锁的时候...原创 2020-03-18 21:53:25 · 179 阅读 · 0 评论 -
【JUC】什么是公平锁和非公平锁
Java锁之公平锁和非公平锁 概念 公平锁 是指多个线程按照申请锁的顺序来获取锁,类似于排队买饭,先来后到,先来先服务,就是公平的,也就是队列 非公平锁 是指多个线程获取锁的顺序,并不是按照申请锁的顺序,有可能申请的线程比先申请的线程优先获取锁,在高并发环境下,有可能造成优先级翻转,或者饥饿的线程(也就是某个线程一直得不到锁) 如何创建 并发包中ReentrantLock的创建可以指定析构函数的b...原创 2020-03-18 21:52:55 · 122 阅读 · 0 评论