摘要: Java锁之自旋锁 自旋锁:spinlock,是指尝试获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁,这样的好处是减少线程上下文切换的消耗,缺点是循环会消耗CPU 原来提到的比较并交换,底层使用的就是自旋,自旋就是多次尝试,多次访问,不会阻塞的状态就是自旋。 优缺点 优点:循环比较获取直到 阅读全文
posted @ 2020-04-27 22:15 MXC肖某某 阅读(669) 评论(0) 推荐(0) 编辑
摘要: 可重入锁和递归锁ReentrantLock 概念 可重入锁就是递归锁 指的是同一线程外层函数获得锁之后,内层递归函数仍然能获取到该锁的代码,在同一线程在外层方法获取锁的时候,在进入内层方法会自动获取锁 也就是说: ReentrantLock / Synchronized 就是一个典型的可重入锁 代码 阅读全文
posted @ 2020-04-27 09:41 MXC肖某某 阅读(785) 评论(0) 推荐(0) 编辑
摘要: Java锁之公平锁和非公平锁 概念 公平锁 是指多个线程按照申请锁的顺序来获取锁,类似于排队买饭,先来后到,先来先服务,就是公平的,也就是队列 非公平锁 是指多个线程获取锁的顺序,并不是按照申请锁的顺序,有可能申请的线程比先申请的线程优先获取锁,在高并发环境下,有可能造成优先级翻转,或者饥饿的线程( 阅读全文
posted @ 2020-04-27 08:51 MXC肖某某 阅读(555) 评论(0) 推荐(0) 编辑