什么是自旋锁和互斥锁?
由于CLH锁是一种自旋锁,那么我们先来看看自旋锁是什么?
自旋锁说白了也是一种互斥锁,只不过没有抢到锁的线程会一直自旋等待锁的释放,处于busy-waiting的状态,此时等待锁的线程不会进入休眠状态,而是一直忙等待浪费CPU周期。因此自旋锁适用于锁占用时间短的场合。
这里谈到了自旋锁,那么我们也顺便说下互斥锁。这里的互斥锁说的是传统意义的互斥锁,就是多个线程并发竞争锁的时候,没有抢到锁的线程会进入休眠状态即sleep-waiting,当锁被释放的时候,处于休眠状态的一个线程会再次获取到锁。缺点就是这一些列过程需要线程切换,需要执行很多CPU指令,同样需要时间。如果CPU执行线程切换的时间比锁占用的时间还长,那么可能还不如使用自旋锁。因此互斥锁适用于锁占用时间长的场合。
什么是数据库
数据库就是存储数据的地方,好比家里的冰箱用来存放食物,衣柜用来存放衣物…
正是有了数据库之后,我们可以直接查找数据。比如你每天看余额宝账户的收益,其实就是数据库从后台读取给你的。
常见的数据库面试题有:Redis、MySQL、MongoDB、Zookeeper等等