synchronized关键字简析
作者:互联网
什么是synchronized关键字
synchronized,顾名思义就是同步的意思,它是用来保证Java并发安全的一种手段,因为它可以限制一段代码在同一时刻最多只能够被一个线程访问。首先进入被synchronized修饰地方的线程,会先获取到一把锁,之后的其他线程如果要访问这个方法,也需要获取这把锁,可锁只有一把,所以其他线程只能等待持有锁的线程释放锁后,才能去竞争这把锁,从而成功执行代码。
synchronized的用法–这里按照锁的类型来分
- 对象锁:对象锁意思就是锁的是对象,所以同一个类的不同对象实例在获取锁时是不会互相干扰的,像方法锁和同步代码块锁就都是对象锁
- 类锁:用synchronized修饰的静态方法或者直接指定锁为Class对象时,这个锁就是类锁,类只有一个,所以即使对象实例不同,他们在获取锁时一样需要竞争和等待。
synchronized的一些特点
- 它是可重入锁
- 它比较容易造成死锁
- 它无法设置尝试获取锁的超时时间,灵活性不够
- 在退出方法时,无论是正常退出还是异常退出,都会自动释放锁
标签:synchronized,获取,对象,类锁,关键字,简析,线程,锁时 来源: https://blog.csdn.net/weixin_38106322/article/details/104429654