悲观锁
认为自己在使用数据的时候一定会有别的线程来修改数据,所以在获取数据前会加锁,确保不会有别的线程来修改
如:
Synchronized和Lock锁
适合写操作多的场景
乐观锁
适合读操作多的场景

总结:

线程8锁🔐
调用

声明

结果:先打印发送短信,后打印发送邮件
结论:只要方法上加了Synchronized,锁的不是这个方法而是整个资源类

==================================================
声明

调用

结果:先打印邮件,后打印短信
调用

结果:先打印邮件,后打印短信
