什么是线程锁机制?给线程的资源上锁,提升线程数据的安全性;
为什么要给线程上锁? 多线程并发的时候会产生资源争夺,如果不给线程上锁,会引起数据状态出现问题;
悲观锁:持悲观态度,认为线程并发问题经常发生,倾向于给资源上锁。
乐观锁:持乐观态度,认为线程的并发问题部经常发生,倾向于不给资源上锁,而是通过其它的方式解决:
①版本号机制 给数据设置版本,在数据更新后,版本号也更新,修改后的版本于之前的版本进行比较,相同就提交,不相同就不提交。
②CAF机制:通过内存的偏移量算出数据的初始值,然后用初始值计算出预期值,然后拿预期值于实际值进行比较,相同就更新,不相同就不跟新,而是进入循环,直到比较相同为止。
选择合适的锁:线程资源竞争激烈就用悲观锁,竞争不激烈用乐观锁;