公平锁和非公平锁
可重入锁(递归锁)
Synchronized和ReentrantLock就是典型的可重入锁。
优点:避免死锁
synchronized Demo:
只调用了发短信,但是邮件也可以访问。短信相当于外层锁,发短信相当于内层锁。
ReentranLock Demo:
结果:
做一些小改造:
加两把锁,解锁也要两把,也是成功的。 如果是加两把锁,解锁一把锁,就是卡死,因为少了一把锁。加锁几次,解锁就几次,如下:
自旋锁
手写自旋锁
运行结果:
独占锁,共享锁
ReentrantReadWriteLock读写锁。
例子(未加读写锁):
结果,写操作应该为独占,不许被分割。
解决:加上ReentrantReadWriteLock
写操作加上一个写锁
读操作加上一个读锁:
结果: