synchronized关键字解决的是多个线程之间访问资源的同步性,synchronized关键字可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。 另外,在 Java 早期版本中,synchronized属于重量级锁,效率低下,因为监视器锁(monitor)是依赖于底层的操作系统的 Mutex Lock 来实现的,Java 的线程是映射到操作系统的原生线程之上的。如果要挂起或者唤醒一个线程,都需要操作系统帮忙完成,而操作系统实现线程之间的切换时需要从用户态转换到内核态,这个状态之间的转换需要相对比较长的时间,时间成本相对较高,这也是为什么早期的 synchronized 效率低的原因。庆幸的是在 Java 6 之后 Java 官方对从 JVM 层面对synchronized 较大优化,所以现在的 synchronized 锁效率也优化得很不错了。JDK1.6对锁的实现引入了大量的优化,如自旋锁、适应性自旋锁、锁消除、锁粗化、偏向锁、轻量级锁等技术来减少锁操作的开销。
(Java并发面试题)说一说自己对于 synchronized 关键字的了解
未经允许不得转载:IDEA激活码 » (Java并发面试题)说一说自己对于 synchronized 关键字的了解
相关推荐
- (Java并发面试题) 什么是Java Timer 类?如何创建一个有特定时间间隔的任务?
- (Java并发面试题)CopyOnWriteArrayList可以用于什么应用场景?
- (Java并发面试题)乐观锁和悲观锁的理解及如何实现,有哪些实现方式?
- (Java并发面试题)什么是Daemon线程?它有什么意义?
- (Java并发面试题) SynchronizedMap和ConcurrentHashMap有什么区别?
- (Java并发面试题) synchronized和ReentrantLock的区别
- (Java并发面试题) 讲一下 synchronized 关键字的底层原理
- (Java并发面试题) 什么是可重入锁(ReentrantLock)?