多线程常见知识点
多线程常见知识点
锁
两个基础的锁:
- 互斥锁:互斥锁是⼀种最常⻅的锁类型,⽤于实现互斥访问共享资源。在任何时刻,只有⼀个线程可以持有互斥锁,其他线程必须等待直到锁被释放。这确保了同⼀时间只有⼀个线程能够访问被保护的资源。具体请看 AbstractQueuedSynchronizer(AQS)详解
- ⾃旋锁:⾃旋锁是⼀种基于忙等待的锁,即线程在尝试获取锁时会不断轮询,直到锁被释放。无锁设计大部分都使用的是自旋锁。 关于自旋锁,请看 从CAS到无锁编程
其他的锁都是基于这两个锁的
读写锁:允许多个线程同时读共享资源,只允许⼀个线程进⾏写操作。分为读(共享)和写(排他)两种状态。
悲观锁:认为多线程同时修改共享资源的概率⽐较⾼,所以访问共享资源时候要上锁
乐观锁:先不管,修改了共享资源再说,如果出现同时修改的情况,再放弃本次操作。