JUC之多线程锁
Posted 古比
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JUC之多线程锁相关的知识,希望对你有一定的参考价值。
Lock8锁问题,之前有一个Lock8锁的笔记 https://www.cnblogs.com/pangbi/p/14972548.html
公平锁和非公平锁
ReentrantLock()在没有传入参数的情况下,就是默认为非公平锁
非公平锁:可能会有线程饿死的情况,但执行效率高
公平锁:有一种排队依次执行的感觉,效率相对低
可重入锁
synchronized(隐式的)和Lock(显示)都是可重入锁
例子如下:
public class KeChongRuLock { public static void main(String[] args){ Object o = new Object(); new Thread(()->{ synchronized (o){ System.out.println("外层"); synchronized (o){ System.out.println("中层"); synchronized (o){ System.out.println("内层"); } } } },"A").start(); } }
ReentrantLock lock = new ReentrantLock(); new Thread(()->{ try{ lock.lock(); System.out.println(Thread.currentThread().getName()+"外层"); try{ lock.lock(); System.out.println(Thread.currentThread().getName()+"内层"); }finally { lock.unlock(); } }finally { lock.unlock(); } },"BB").start();
以上是关于JUC之多线程锁的主要内容,如果未能解决你的问题,请参考以下文章
(大厂必备)厂长熬夜爆肝万字之多线程高并发JUC编程⭐学妹已收藏
(大厂必备)厂长熬夜爆肝万字之多线程高并发JUC编程⭐学妹已收藏