美文网首页
synchronized详解

synchronized详解

作者: justlinzhihe | 来源:发表于2017-10-13 14:57 被阅读0次
    • 第一种,锁在方法上,这种很好理解
    • 第二种,锁变量
    图一

    关于这个锁我一开始理解的是在执行完synchronized代码块之前,对于this.name的操作是不能进行的,比如this.name.charAt,然而

    图二 图三

    从结果可知,在锁期间我还是可以对name进行操作,所以正确理解应该是我拿到了name这个对象的锁,在其他用到这个锁的地方才会起作用,比如

    图四 图五
    • 第三种,锁对象实例,其实这个和第二种是一样的,因为java里一切皆对象,成员变量也是对象
    图六 图七

    可以看出第一种方发锁其实锁的就是对象实例

    • 第四种,锁类
    图八 图九

    可以看出构造器也是属于类锁的范围

    总结如下:java中的synchronized其实就是那一个实例当做一把锁,类其实你可以看做一个特殊的对象,因为类定义在整个jvm中只有一份。任何用到这个锁的地方都会被阻塞直到拿到锁。

    相关文章

      网友评论

          本文标题:synchronized详解

          本文链接:https://www.haomeiwen.com/subject/lwdoyxtx.html