我知道是唯一的,那么甲登录后 是查询是account,乙登录后查询是account,怎么知道他们是同一个?经典的取钱 是synchoned(account),这个account必须是一样吧,怎么知道的呢

解决方案 »

  1.   


    我知道是唯一的,那么甲登录后 是查询是account,乙登录后查询是account,怎么知道他们是同一个?经典的取钱 是synchoned(account),这个account必须是一样吧,怎么知道的呢你想问的是不是当他们去查询的时候,synchronized(account)是怎么确定它锁定的是两个想同的用户?
    Synchronized之所以能知道是同一个资源,是因为我们都是根据同一个ID去访问数据的。
    就像我们去公厕上厕所,我在上的时候你肯定是不能进来上的,对吧?当我上完把茅坑让出来,你才能上,对吧?在这个过程里,茅坑是不会改变的。不会说,你上到一半茅坑换成隔壁的了。因为茅坑已经固定在哪里了。
    我们共同访问的资源就像这个茅坑,Synchronized只不过是在茅坑外围加了把锁,谁先拿到锁谁就可以先使用,下一个想使用,不行,得等我用完你才能用,这样就有效了保障了数据的一致性。
    这样说能明白么?
      

  2.   


    我知道是唯一的,那么甲登录后 是查询是account,乙登录后查询是account,怎么知道他们是同一个?经典的取钱 是synchoned(account),这个account必须是一样吧,怎么知道的呢你想问的是不是当他们去查询的时候,synchronized(account)是怎么确定它锁定的是两个想同的用户?
    Synchronized之所以能知道是同一个资源,是因为我们都是根据同一个ID去访问数据的。
    就像我们去公厕上厕所,我在上的时候你肯定是不能进来上的,对吧?当我上完把茅坑让出来,你才能上,对吧?在这个过程里,茅坑是不会改变的。不会说,你上到一半茅坑换成隔壁的了。因为茅坑已经固定在哪里了。
    我们共同访问的资源就像这个茅坑,Synchronized只不过是在茅坑外围加了把锁,谁先拿到锁谁就可以先使用,下一个想使用,不行,得等我用完你才能用,这样就有效了保障了数据的一致性。
    这样说能明白么?
    +1