zoukankan      html  css  js  c++  java
  • 二十二 synchronized同步方法

    一 Synchronized锁:

      1 synchronized取得的锁都是对象锁,而不是把一段代码或方法加锁。

         synchronized是给该方法的实例对象加锁。如果多个线程访问的是同一个对象

         的synchronized方法,就可以同步。

      2 对象中的非synchronized类型的方法是不需要等待锁的。

      3 不同的synchronized方法之间也是互斥的,因为锁的是对象!

    二 Synchronized锁重入:

      1 synchronized具有锁重入的功能,同一个线程可以多次获得一个对象的锁。也就是说:一个synchronized方法内部调用本类的其他synchronized方法时,是永远             可以得到锁的。

            2 可重入锁也支持在父子继承的情况下

            3  出现异常情况,锁自动释放。当一个线程执行的代码出现异常时,其所有的锁会自动释放。

       4 子类继承父类的同步方法时,如果希望也是同步方法需要加上synchronized关键字。

    三 synchronized同步语句块

      1 控制的粒度更细致,效率更高。

       2 synchronized (this)

       3 当一个线程访问object的一个synchronized(this)同步代码块,其他线程对同一object中所有的其他synchronized(this)同步代码块的访问都将被阻塞,说明synchronized使用的“对象监视器”是一个。

    四 将任意对象作为对象监视器

      多个线程调用同一个对象中的不同名称的synchronzied同步方法或synchronzied(this)同步代码块时,调用的效果就是按顺序执行,也就是同步,阻塞。

      锁非this对象的优点:比如一个类中四个方法,方法1和2需要同步,方法3和4需要同步,这个时候就可以用非this的锁,效率高。

     五 静态同步synchronized方法与synchronized(class)代码块     

      关键字synchronized还可以用在static静态方法上,这样写,是对当前加锁。

      类锁可以对类的所有对象实例起作用。 

     

      

  • 相关阅读:
    redis 数据类型 Hash
    redis有序集合类型sort set
    redis数据类型set
    redis的 list
    redis的key
    centos安装redis
    input聚焦事件
    width(),innerWidth(),outerWidth(),outerWidth(true)
    jq 选择器
    详解CSS中:nth-child的用法_大前端
  • 原文地址:https://www.cnblogs.com/liufei1983/p/9873519.html
Copyright © 2011-2022 走看看