用户A:从数据库取出这个帖子的访问量,存到一个变量A中(例如100)
用户B:从数据库取出这个帖子的访问量,存到一个变量B中(也是100)
用户A:把这个变量A加一(这时是101)
用户B:把这个变量B加一(这时是101)
用户A:把这个变量A写入到数据库(这时数据库中是101)
用户B:把这个变量B写入到数据库(这时数据库中还是101)
大家细看一下!用户A写入数据库的结果实际上被覆盖了,访问量只增加了一次!
对于访问量这不重要,但是如果是你去淘宝买东西充值(好吧,其实淘宝用的是java)呢?
---------------------
这种情况下我们就要用到锁,这是在并发(就是多个进程/线程同时运行)编程中很常见和常用的概念
加锁就是,有一个中间人,负责管理各个进程,让他们的工作同步,不会出现例如上面的情况
引入锁之后,上面的过程是这样的: