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