这篇文章主要介绍Java中关于锁的面试题有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
Java有哪些集合类
Java中的集合主要分为四类:1,列清单表:有序的,可重复的;2、队列队列:有序,可重复的;3,设置集合:不可重复;4、地图映射:无序,键唯一,值不唯一。
<强> 1。同步作用于静态方法和非静态方法的区别强>
非静态方法:
给对象加锁(可以理解为给这个对象的内存上锁,注意只是这块内存,其他同类对象都会有各自的内存锁),这时候在其他一个以上线程中执行该对象的这个同步方法(注意:是该对象)就会产生互斥
静态方法:相当于在类上加锁(* . class位于代码区,静态方法位于静态区域,这个类产生的对象公用这个静态方法,所以这块内存,N个对象来竞争),
这时候,只要是这个类产生的对象,在调用这个静态方法时都会产生互斥。即该类所有的对象都共享一把锁。
<强> 2。锁类型有哪些强>
(1)乐观锁,悲观锁
(2)自旋锁和非自旋锁
(3)可重入锁,不可重入锁
(4)无锁,轻量级锁,偏向锁,重量级锁
(5)互斥锁,共享锁
(6)公平锁和非公平锁
<强> 3。线程同步的几种方式强>
同步修饰
挥发性实现同步(只能保证可见性,不能保证原子性)
使用局部变量ThreadLocal
使用原子类(AtomicInteger, AtomicBoolean……)
使用锁
使用容器类(BlockingQueue ConcurrentHashMap)
<强> 4。同步和锁机制区别强>
同步原始采用的是CPU悲观锁机制,即线程获得的是独占锁。独占锁意味着其他线程只能依靠阻塞来等待线程释放锁。
锁用的是乐观锁方式。所谓乐观锁就是,每次不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止。乐观锁实现的机制就是中科院操作(比较和交换)。
<强> 5。说说线程安全的问题强>
线程安全是多线程领域的问题,线程安全可以简单理解为一个方法或者一个实例可以在多线程环境中使用而不会出现问题。
在Java多线程编程当中,提供了多种实现Java线程安全的方式:
最简单的方式,使用同步关键字
使用Java . util . concurrent。原子包中的原子类,例如AtomicInteger
使用java . util . concurrent。锁包中的锁
使用线程安全的集合ConcurrentHashMap
使用不稳定的关键字,保证变量可见性
以上是“Java中关于锁的面试题有哪些”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!