知识的广度来自知识的深度,学习如果不成体系那是多可怕的一件事儿,希望我们在未来的学习道路上坚守初心,不要给自己留下遗憾,以自己喜欢的方式生活,做自己喜欢做的事,宠爱自己,做一个独一无二的自己!
- 对于文章中出现的任何错误请大家批评指出,会及时做出修改!
- 有任何想要讨论和学习的问题可联系我:cittaksana@qq.com
悲观锁和乐观锁机制 - Java基础
一、资源和加锁
1、场景描述
多线程并发访问同一个资源问题,假如线程A获取变量之后修改变量值,线程C在此时也获取变量值并且修改,两个线程同时并发处理一个变量,就会导致并发问题。
这种并行处理数据库的情况在实际的业务开发中很常见,两个线程先后修改数据库的值,导致数据有问题,该问题复现的概率不大,处理的时候需要对整个模块体系有概念,才能容易定位问题。
2、演示案例
public class LockThread01 {
public static void main(String[] args) {
CountAdd countAdd = new CountAdd() ;
AddThread01 addThread01 = new AddThread01(countAdd) ;
addThread01.start();
AddThread02 varThread02 = new AddThread02(countAdd) ;
varThread02.start();
}
}
class AddThread01 extends Thread {
private CountAdd countAdd ;
public AddThread01 (CountAdd countAdd){
this.countAdd = countAdd ;
}
@Override
public void run() {
countAdd.countAdd(30)