最全线程死锁面试题lock及答案.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

最全线程死锁面试题lock及答案

一、单项选择题

1.以下关于线程死锁的说法中,正确的是()

A.死锁只会发生在多线程环境中,单线程不会出现死锁

B.只要有两个线程就一定会发生死锁

C.死锁是一种正常的程序运行状态

D.死锁不会导致程序崩溃

答案:A。单线程不存在资源竞争和相互等待的情况,不会产生死锁;两个线程不一定会发生死锁,死锁需要满足特定条件;死锁是程序的异常状态,可能导致程序崩溃。

2.产生死锁的四个必要条件中,()是指进程已获得的资源,在未使用完之前,不能被其他进程强行夺走,只能由获得该资源的进程自己释放。

A.互斥条件

B.请求和保持条件

C.不剥夺条件

D.环路等待条件

答案:C。互斥条件是指资源在同一时刻只能被一个进程使用;请求和保持条件是指进程已经保持了至少一个资源,但又提出了新的资源请求;环路等待条件是指在发生死锁时,必然存在一个进程——资源的环形链。

3.若系统中有5个进程共享若干个资源R,每个进程都需要4个资源R,那么使系统不发生死锁的资源R的最少数目是()

A.16

B.17

C.18

D.19

答案:A。每个进程都差一个资源就会发生死锁,此时再多一个资源就能保证至少有一个进程能获得所需全部资源并运行结束,释放资源。所以5×(4-1)+1=16。

4.以下哪种方法不能预防死锁()

A.破坏互斥条件

B.破坏请求和保持条件

C.破坏不剥夺条件

D.破坏环路等待条件

答案:A。有些资源本身的特性决定了其必须互斥使用,无法破坏互斥条件来预防死锁;可以通过预先分配所有资源破坏请求和保持条件,通过剥夺资源破坏不剥夺条件,通过资源有序分配破坏环路等待条件。

5.当一个线程调用Lock接口的lock()方法时,如果锁已经被其他线程持有,该线程会()

A.立即返回false

B.阻塞等待,直到锁被释放

C.抛出异常

D.继续执行后续代码

答案:B。lock()方法会使线程阻塞等待,直到获取到锁才能继续执行后续代码;tryLock()方法会立即返回是否获取到锁的结果;获取锁失败一般不会抛出异常。

6.以下关于ReentrantLock的说法,错误的是()

A.ReentrantLock是可重入锁

B.ReentrantLock支持公平锁和非公平锁

C.ReentrantLock必须在finally块中释放锁

D.ReentrantLock不能实现定时锁

答案:D。ReentrantLock是可重入锁,支持公平锁和非公平锁,为了确保锁一定能被释放,通常在finally块中释放锁;它可以使用tryLock(longtimeout,TimeUnitunit)方法实现定时锁。

7.在Java中,线程死锁的根本原因是()

A.线程调度不合理

B.多个线程同时访问共享资源

C.线程间相互等待对方释放资源,且都不释放自己已持有的资源

D.线程优先级设置不当

答案:C。线程调度不合理和优先级设置不当可能影响程序性能,但不是死锁的根本原因;多个线程同时访问共享资源不一定会导致死锁,只有当它们相互等待对方释放资源且都不释放自己已持有的资源时才会发生死锁。

8.下面关于死锁检测的说法,正确的是()

A.死锁检测只能在系统发生死锁后进行

B.死锁检测可以实时发现死锁

C.死锁检测不需要额外的系统开销

D.死锁检测不能解决死锁问题

答案:B。死锁检测可以实时进行,在系统运行过程中不断检查是否存在死锁;它需要一定的系统开销;检测到死锁后可以采取相应措施解决死锁问题,比如剥夺某些进程的资源。

9.若有两个线程T1和T2,T1持有锁L1并尝试获取锁L2,T2持有锁L2并尝试获取锁L1,这种情况会导致()

A.饥饿

B.活锁

C.死锁

D.无异常,正常运行

答案:C。这种相互等待对方持有的资源的情况满足死锁的条件,会导致死锁;饥饿是指一个线程一直得不到所需资源;活锁是指线程不断改变自己的状态但无法继续执行。

10.使用Lock接口的tryLock()方法时,如果锁当前可用,该方法会()

A.阻塞线程,直到锁被释放

B.立即返回true,并获取锁

C.立即返回false

D.抛出异常

答案:B。tryLock()方法会尝试获取锁,如果锁当前可用,会立即返回true并获取锁;如果锁不可用,会立即返回false,不会阻塞线程。

二、多项选择题

1.线程死锁的四个必要条件包括()

A.互斥条件

B.请求和保持条件

C.不剥夺条件

D.环路等待条件

答案:ABCD。这四个条件是产生死锁的必要条件,只

文档评论(0)

177****6092 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档