摩根斯坦利面试——Java多线程

在摩根斯坦利的面试中,面试官主要针对Java多线程进行了深入提问,包括ReentrantLock的可重入概念、生产者-消费者模型的实现,以及BlockingQueue接口的具体实现和实现方式。面试过程中,讨论了使用synchronized、Lock、Exchanger以及 BlockingQueue 的场景,同时也提及了ArrayBlockingQueue和LinkedBlockingQueue等具体实现类。
摘要由CSDN通过智能技术生成

今天上午,参加大摩的面试,自觉失败,记录一下过程。

面试官看着简历,并没有就简历提问,整个过程都在问java多线程的问题。

1. ReentrantLock,作为可重入锁,怎么理解“可重入”二字,有没有不可重复的锁?

我:获得对象锁的线程能够再次获得对象锁,访问对象……被鄙视了,后来想想,应该把递归这种场景说下;

2.生产者-消费者模型怎么实现?

我:使用synchronized或者Lock这些同步方法实现。

面试官就问,为什么不用一些更高级的封装呢?

我:可以使用Exchanger类。

面试官:用BlockingQueue也可以,接下来,

3.作为一个接口,它有哪些具体的实现类?如何实现一个BlockingQueue,请实现它?

我:不清楚具体实现(后来查了下,有ArrayBlockingQueue,LinkedBlockingQueue,PriorityBlockingQueue,DelayQueue,SynchronousQueue,前两个最常见)。

可以使用List来存储数据,使用Lock与Condition来保证同步,代码如下(最好使用模板),

public class DefinedBlockingQueue {
	private LinkedList<Integer> queue;
	private Lock lo
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值