文章目录
-
-
- synchronized
- synchronized与lock的区别
- volatile
- 知道threadlocal吗,谈谈你对它的理解
- 实现线程的几种方式
- yeild、join、sleep、wait、notify(notifyAll)
- JUC中常用工具类
- CAS
- java原子类操作
- lock 显式锁,必须显示释放
- ReadWriteLock 读写锁,同一时刻允许多个读线程访问,写线程不可以同时访问。
- Condition接口
- AQS AbstractQueuedSynchronized
- 适应性自旋锁。1.6引入
- ReentrantLock
- ReentrantLock与Synchronized的区别
- Condition与Object
- tryLock、Lock、lockInterruptiblly
- Semaphore
- ReentrantLock和Semaphore
- 重量级锁,依赖于底层的操作系统Mutex Lock所实现的锁,即为重量级锁。
- 轻量级锁,旨在没有多线程竞争前提下,减少传统的重量级锁产生的性能消耗。
- 偏向锁:旨在无多线程竞争的情况下尽量减少不必要的轻量级锁执行路径。
- 锁优化
- interrupt,线程中断
- 同步锁、死锁
- 线程池
- 阻塞队列
- ThreadLocal
-
synchronized
java关键字,是jVM级别的重量级锁。可以对各种对象进行加锁。
1作用在静态代码块、静态方法、静态变量上是对类进行加锁。
2作用在普通成员方法、普通代码块上则是对类的实例对象进行加锁。是可重入锁,不公平锁。
synchronized与lock的区别
- synchronized是java关键字,是jvm内置锁,lock是java类,是代码层面上的锁
- synchronized是可重入锁,不可中断,非公平,没有超时的概念,得不到锁会一直等待。lock是公平锁,可重入,可中断
- lock必须显式使用、显式释放。必须在finally语句中进行unlock,适合包含大量同步代码情况。synchronized使用完会自动释放锁,适合少量同步代码情况
- synchronized不可以判断是否得到锁,lock可以判断是否的得到锁