synchronized关键字简析

什么是synchronized关键字

synchronized,顾名思义就是同步的意思,它是用来保证Java并发安全的一种手段,因为它可以限制一段代码在同一时刻最多只能够被一个线程访问。首先进入被synchronized修饰地方的线程,会先获取到一把锁,之后的其他线程如果要访问这个方法,也需要获取这把锁,可锁只有一把,所以其他线程只能等待持有锁的线程释放锁后,才能去竞争这把锁,从而成功执行代码。

synchronized的用法–这里按照锁的类型来分

  • 对象锁:对象锁意思就是锁的是对象,所以同一个类的不同对象实例在获取锁时是不会互相干扰的,像方法锁和同步代码块锁就都是对象锁
  • 类锁:用synchronized修饰的静态方法或者直接指定锁为Class对象时,这个锁就是类锁,类只有一个,所以即使对象实例不同,他们在获取锁时一样需要竞争和等待。

synchronized的一些特点

  • 它是可重入锁
  • 它比较容易造成死锁
  • 它无法设置尝试获取锁的超时时间,灵活性不够
  • 在退出方法时,无论是正常退出还是异常退出,都会自动释放锁
发布了200 篇原创文章 · 获赞 201 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_38106322/article/details/104429654
今日推荐