当前位置: 首页 > 面试题库 >

Java:Synchronized 用过吗,其原理是什么?

华飞驰
2023-04-24

(1)可重入性

synchronized的锁对象中有一个计数器(recursions变量)会记录线程获得几次锁;

  1. 可重入的好处:
  2. 可以避免死锁;
  3. 可以让我们更好的封装代码;

synchronized是可重入锁,每部锁对象会有一个计数器记录线程获取几次锁,在执行完同步代码块时,计数器的数量会-1,直到计数器的数量为0,就释放这个锁。

(2)不可中断性

  1. 一个线程获得锁后,另一个线程想要获得锁,必须处于阻塞或等待状态,如果第一个线程不释放锁,第二个线程会一直阻塞或等待,不可被中断;
  2. synchronized 属于不可被中断;
  3. Lock lock方法是不可中断的;
  4. Lock tryLock方法是可中断的;
 类似资料:
  • synchronized 是和 if、else、for、while 一样的关键字,ReentrantLock 是类,这是二者的本质区别。既然 ReentrantLock 是类,那么它就提供了比synchronized 更多更灵活的特性,可以被继承、可以有方法、可以有各种各样的类变量 synchronized 早期的实现比较低效,对比 ReentrantLock,大多数场景性能都相差较大,但是在 J

  • 本文向大家介绍你有用过CSS预处理器吗?喜欢用哪个?原理是什么?相关面试题,主要包含被问及你有用过CSS预处理器吗?喜欢用哪个?原理是什么?时的应答技巧和注意事项,需要的朋友参考一下 它能让你的CSS具备更加简洁、适应性更强、可读性更强、层级关系更加明显、更易于代码的维护等诸多好处。 CSS预处理器种类繁多,目前Sass、Less、用的比较多。 使用功能: 1、嵌套:反映层级和约束 2、变量和计算

  • 本文向大家介绍什么是batch normalization,原理是什么?相关面试题,主要包含被问及什么是batch normalization,原理是什么?时的应答技巧和注意事项,需要的朋友参考一下 Batch Normalization就是在训练过程,每一层输入加一个标准化处理。 深度神经网络之所以复杂有一个原因就是由于在训练的过程中上一层参数的更新使得每一层的输入一直在改变。所以有个办法就是去

  • 本文向大家介绍overflow的原理是什么?相关面试题,主要包含被问及overflow的原理是什么?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 要讲清楚这个解决方案的原理,首先需要了解块格式化上下文,A block formatting context is a part of a visual CSS rendering of a Web page. It is the region

  • flutter是通过什么原理和原生进行交互的?

  • 本文向大家介绍你有看过JQuery的源码吗?说下它的实现原理是什么?相关面试题,主要包含被问及你有看过JQuery的源码吗?说下它的实现原理是什么?时的应答技巧和注意事项,需要的朋友参考一下 [jQuery] 你有看过JQuery的源码吗?说下它的实现原理是什么? #163 重复了