• 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修改的值

  • 相关阅读:
    web测试学习大纲
    Python语言编程基础
    python文件IO
    Python 正则表达式
    python官网导航翻译
    python常用库
    python连接数据库
    sublime与python交互
    selenium连接浏览器方式
    sublime中运行python时编码格式问题
  • 原文地址:https://www.cnblogs.com/bbsh/p/11678784.html
Copyright © 2020-2023  润新知