温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java中关于锁的面试题有哪些

发布时间:2021-05-03 08:18:04 来源:亿速云 阅读:333 作者:小新 栏目:编程语言

这篇文章主要介绍Java中关于锁的面试题有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

Java有哪些集合类

Java中的集合主要分为四类:1、List列表:有序的,可重复的;2、Queue队列:有序,可重复的;3、Set集合:不可重复;4、Map映射:无序,键唯一,值不唯一。

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 操作(Compare and Swap)。

5.说说线程安全的问题

线程安全是多线程领域的问题,线程安全可以简单理解为一个方法或者一个实例可以在多线程环境中使用而不会出现问题。

在 Java 多线程编程当中,提供了多种实现 Java 线程安全的方式:

最简单的方式,使用 Synchronization 关键字

使用 java.util.concurrent.atomic 包中的原子类,例如 AtomicInteger

使用 java.util.concurrent.locks 包中的锁

使用线程安全的集合 ConcurrentHashMap

使用 volatile关键字,保证变量可见性

以上是“Java中关于锁的面试题有哪些”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI