多线程之Synchronized

原创
2021/12/24 11:12
阅读数 116

sychronized的使用

  1. 修饰方法
public synchronized void method(){}
  1. 修饰代码块
锁对象:
public void method(){
    synchronized(this){
        
    }
}
锁类:
public static void method(){
    synchronized(xxx.class){
        
    }
}

锁的对象是谁

​ synchronized可以锁对象也可以锁类

  1. 锁对象:修饰动态方法、修饰静态代码块的对象
  2. 锁类:在静态方法中修饰代码块class

锁升级过程

​ 无锁,偏向锁,轻量级锁,重量级锁

sychronized和Lock的区别

  1. sychronized是java内置的关键字,Lock是java中的类。
  2. sychronized无法判断锁的状态,Lock可以判断是否获取到锁,例如trylock()。
  3. sychronized使用完成可以自动释放锁,Lock需要手动释放锁,否则会出现死锁情况。
  4. sychronized可以重入,不可中断,非公平,Lock可以重入,可以判断锁状态,可以设置是否公平锁。
  5. sychronized适合锁少量的同步代码,Lock适合锁大量的同步代码
展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部