zoukankan      html  css  js  c++  java
  • 04-互斥锁

    不能用账户余额this.balance和this.password做为锁对象。

    这两个对象都是可变对象,一但对他们进行赋值就会变成新的对象,加的锁就失效了。不能把可变的对象当成一把锁

    Integer String Boolean相关的知识:Integer会缓存-128~127这个范围内的数值,String对象同样会缓存字符串常量到字符串常量池,可供重复使用,所以不能用来用作锁对象。

    比如有线程A、B、C
    线程A首先拿到balance1锁,线程B这个时候也过来,发现锁被拿走了,线程B被放入一个地方进行等待。
    当A修改掉变量balance的值后,锁由balance1变为balance2.
    线程B也拿到那个balance1锁,这时候刚好有线程C过来,拿到了balance2锁。
    由于B和C持有的锁不同,所以可以同时执行这个方法来修改balance的值,这个时候就有可能是线程B修改的值会覆盖掉线程C修改的值

  • 相关阅读:
    HDU 5090 Game with Pearls
    HDU 1394 Minimum Inversion Number
    HDU 1698 Just a Hook
    POJ 2104 K-th Number
    UVA 1160
    HDU 5895 Mathematician QSC
    HDU 3294 Girls' research
    HDU 3068 最长回文
    PyCharm每日技巧-1
    如何一年考过日语一级
  • 原文地址:https://www.cnblogs.com/bbsh/p/11678784.html
Copyright © 2011-2022 走看看