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