Java中锁的面试题实例分析


这篇文章主要讲解了“Java中锁的面试题实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中锁的面试题实例分析”吧!1.synchronized作用于静态方法和非静态方法的区别非静态方法:给对象加锁(可以理解为给这个对象的内存上锁,注意 只是这块内存,其他同类对象都会有各自的内存锁),这时候在其他一个以上线程中执行该对象的这个同步方法(注意:是该对象)就会产生互斥静态方法: 相当于在类上加锁(*.class位于代码区,静态方法位于静态区域,这个类产生的对象公用这个静态方法,所以这块内存,N个对象来竞争),这时候,只要是这个类产生的对象,在调用这个静态方法时都会产生互斥。即该类所有的对象都共享一把锁。2.锁类型有哪些(1)乐观锁&悲观锁(2)自旋锁&非自旋锁(3)可重入锁&不可重入锁(4)无锁&轻量级锁&偏向锁&重量级锁(5)互斥锁&共享锁(6)公平锁&非公平锁3.线程同步的几种方式synchronized修饰volatile实现同步(只能保证可见性,不能保证原子性)使用局部变量ThreadLocal使用原子类(AtomicInteger、AtomicBoolean……)使用Lock使用容器类(BlockingQueue、ConcurrentHashMap)4.synchronized 和 lock 机制区别synchronized 原始采用的是 CPU 悲观锁机制,即线程获得的是独占锁。独占锁意味着其 他线程只能依靠阻塞来等待线程释放锁。Lock 用的是乐观锁方式。所谓乐观锁就是,每次不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止。乐观锁实现的机制就是 CAS 操作(Com 香港云主机pare and Swap)。5.说说线程安全的问题线程安全是多线程领域的问题,线程安全可以简单理解为一个方法或者一个实例可以在多线程环境中使用而不会出现问题。Java 多线程编程当中,提供了多种实现 Java 线程安全的方式:最简单的方式,使用Synchronization 关键字使用java.util.concurrent.atomic 包中的原子类,例如 AtomicInteger使用java.util.concurrent.locks 包中的锁使用线程安全的集合ConcurrentHashMap使用volatile关键字,保证变量可见性感谢各位的阅读,以上就是“Java中锁的面试题实例分析”的内容了,经过本文的学习后,相信大家对Java中锁的面试题实例分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是开发云,小编将为大家推送更多相关知识点的文章,欢迎关注!

相关推荐: Python类基础知识有哪些

这篇文章主要讲解了“Python类基础知识有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python类基础知识有哪些”吧!  1、类的基础知识  说到类,就不得不提面向过程编程和面向对象编程。下面用1个例…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 08/31 11:46
下一篇 08/31 11:46

相关推荐