几种锁

互斥锁

某一时刻最多只有一个线程能获得互斥锁

自旋锁

一种特殊的互斥锁,获取不到锁时,不是直接进入阻塞队列等待唤醒,而是进入循环等待状态(占用CPU),循环询问能否获得锁,具有高响应,但是占用大量CPU资源

读写锁

读写锁某一时刻只能被一条线程获得写锁或者同时被多条线程获得读锁.
读写,写写互斥.读读可同时进行

悲观锁

在每次读取数据时都认为会有人更改数据,所以每次读取数据时都会加锁.
很多传统关系型数据库就使用了这个锁,

乐观锁

在每次读取数据时都认为不会有人更改数据,所以每次读取数据时都不会加锁.在更新时会判断一下是否有其他线程更改了数据,是的话返回错误,具体操作有开发人员决定