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

请说明一下锁和同步的区别。

龙承颜
2023-03-14
本文向大家介绍请说明一下锁和同步的区别。相关面试题,主要包含被问及请说明一下锁和同步的区别。时的应答技巧和注意事项,需要的朋友参考一下

考察点:锁

用法上的不同: synchronized既可以加在方法上,也可以加载特定代码块上,而lock需要显示地指定起始位置和终止位置。 synchronized是托管给JVM执行的,lock的锁定是通过代码实现的,它有比synchronized更精确的线程语义。 性能上的不同: lock接口的实现类ReentrantLock,不仅具有和synchronized相同的并发性和内存语义,还多了超时的获取锁、定时锁、等候和中断锁等。 在竞争不是很激烈的情况下,synchronized的性能优于ReentrantLock,竞争激烈的情况下synchronized的性能会下降的非常快,而ReentrantLock则基本不变。 锁机制不同: synchronized获取锁和释放锁的方式都是在块结构中,当获取多个锁时,必须以相反的顺序释放,并且是自动解锁。而Lock则需要开发人员手动释放,并且必须在finally中释放,否则会引起死锁。

 类似资料:
  • 本文向大家介绍请说明一下http和https的区别相关面试题,主要包含被问及请说明一下http和https的区别时的应答技巧和注意事项,需要的朋友参考一下 考察点:http协议 参考回答; https协议要申请证书到ca,需要一定经济成本;2) http是明文传输,https是加密的安全传输;3) 连接的端口不一样,http是80,https是443;4)http连接很简单,没有状态;https是

  • 本文向大家介绍请你说明一下Map和ConcurrentHashMap的区别?相关面试题,主要包含被问及请你说明一下Map和ConcurrentHashMap的区别?时的应答技巧和注意事项,需要的朋友参考一下 考点:集合 hashmap是线程不安全的,put时在多线程情况下,会形成环从而导致死循环。CoucurrentHashMap是线程安全的,采用分段锁机制,减少锁的粒度。

  • 本文向大家介绍请说明一下线程中的同步和异步有何异同?并且请举例说明在什么情况下会使用到同步和异步?相关面试题,主要包含被问及请说明一下线程中的同步和异步有何异同?并且请举例说明在什么情况下会使用到同步和异步?时的应答技巧和注意事项,需要的朋友参考一下 考察点:线程同步 如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享

  • 本文向大家介绍请说明一下final, finally, finalize的区别。相关面试题,主要包含被问及请说明一下final, finally, finalize的区别。时的应答技巧和注意事项,需要的朋友参考一下 考察点:声明 final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 finally是异常处理语句结构的一部分,表示总是执行。 finalize是Objec

  • 本文向大家介绍请你说一下C++多线程的同步,锁的机制?相关面试题,主要包含被问及请你说一下C++多线程的同步,锁的机制?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 同步的时候用一个互斥量,在访问共享资源前对互斥量进行加锁,在访问完成后释放互斥量上的锁。对互斥量进行加锁以后,任何其他试图再次对互斥量加锁的线程将会被阻塞直到当前线程释放该互斥锁。如果释放互斥锁时有多个线程阻塞,所有在该互斥

  • 本文向大家介绍请说明一下@Controller和@RestController的区别是什么?相关面试题,主要包含被问及请说明一下@Controller和@RestController的区别是什么?时的应答技巧和注意事项,需要的朋友参考一下 考察点:spring 参考回答: @RestController注解相当于@ResponseBody + @Controller合在一起的作用