zoukankan      html  css  js  c++  java
  • 1.6synchronized代码块

    1.synchronized可以使用任意的Object进行加锁,用法比较灵活

     ===================================================================

    另外特别注意一个问题,就是不要使用String常量加锁,会出现死循环

     

     输出结果:

     永远都是t1开始,t1结束,没有t2什么事,这是什么原因呢?

    String在常量池中只有一个引用,所以尽量不要用字符串常量去加锁

    可以采用如下这种方式:

    这样就能保证t1,t2都进来了

     

     ===================================================================

    锁对象改变的问题:

    当使用一个对象进行加锁的时候,要注意对象本身发生改变的时候,那么持有的锁就不同.如果对象本身不发生改变,那么依然是同步的,即使是对象属性发生了改变.

     如果一修改,锁就发生变化了,那么其他对应的线程就能进来了

    ----------------------------------------------------------------------------------------------------------------------------

    如果对象本身不发生改变,那么依然是同步的,即使是对象属性发生了改变.

     

     这把锁就是modifyLock这个对象

     执行结果:

  • 相关阅读:
    (备忘)jeecg的$.dialog的一些参数
    jquery中的ajax方法(备忘)
    linux(centos7)设置tomcat开机启动
    centos7设置静态IP地址
    golang 之 sql
    golang 之 flag
    golang 之 context包
    golang 之文件操作
    golang之strings
    golang 函数和方法
  • 原文地址:https://www.cnblogs.com/curedfisher/p/11981196.html
Copyright © 2011-2022 走看看