并发编程-Lock锁

作者: 迦叶_金色的人生_荣耀而又辉煌 | 来源:发表于2020-11-29 08:46 被阅读0次

上一篇 <<<Synchronized锁
下一篇 >>>Java基础-对象布局


Lock锁基本的实现方法

  • void lock() ---获取锁 如果没有获取到锁则阻塞等待。
  • void lockInterruptibly --- 和lock一样 但是可以阻塞线程 可以中断
  • tryLock()---非阻塞式获取锁,如果获取到锁则返回true,没有获取到锁返回false
  • tryLock(timeout, TimeUnit timeUnit)--- 带有超时时间获取锁
  • void unlock()---释放锁

Lock锁实现原理

通过AQS+LockSupport+Cas实现
Lock锁是乐观+悲观的结合体,悲观是通过locksupport实现。
Lock锁原理 基于javaAQS类封装 在获取锁的时候AQS类中有一个状态state+1,当前线程不断重入的时候都会不断1+,当在释放锁的时候state-1;最终state为0 该锁没有被任何线程获取到,没有抢到锁的线程,会存在一个双向的链表中。


相关文章链接:
多线程基础
线程安全与解决方案
锁的深入化
锁的优化
Java内存模型(JMM)
Volatile解决JMM的可见性问题
Volatile的伪共享和重排序
CAS无锁模式及ABA问题
Synchronized锁
AQS同步器
Condition
CountDownLatch同步计数器
Semaphore信号量
CyclicBarrier屏障
线程池
并发队列
Callable与Future模式
Fork/Join框架
Threadlocal
Disruptor框架
如何优化多线程总结

相关文章

网友评论

    本文标题:并发编程-Lock锁

    本文链接:https://www.haomeiwen.com/subject/fbbviktx.html