专栏名称: java那些事
分享java开发中常用的技术,分享软件开发中各种新技术的应用方法。每天推送java技术相关或者互联网相关文章。关注“java那些事”,让自己做一个潮流的java技术人!《java程序员由笨鸟到菜鸟》系列文章火热更新中。
目录
相关文章推荐
芋道源码  ·  告别if else!这款轻量级规则引擎框架,真香! ·  10 小时前  
Java编程精选  ·  Controller层代码这么写,简洁又优雅! ·  昨天  
Java编程精选  ·  字节员工自曝:在强调一遍OD ... ·  2 天前  
Java编程精选  ·  雷军删文,热搜第一! ·  3 天前  
51好读  ›  专栏  ›  java那些事

15个顶级Java多线程面试题及回答

java那些事  · 公众号  · Java  · 2018-12-04 08:49

正文

请到「今天看啥」查看全文



lock接口在多线程和并发编程中最大的优势是它们为读和写分别提供了锁,它能满足你写像ConcurrentHashMap这样的高性能数据结构和有条件的阻塞。Java线程面试的问题越来越会根据面试者的回答来提问。我强烈建议在你去参加多线程的面试之前认真读一下Locks,因为当前其大量用于构建电子交易终统的客户端缓存和交易连接空间。


3)在java中wait和sleep方法的不同?


通常会在电话面试中经常被问到的Java线程面试问题。最大的不同是在等待时wait会释放锁,而sleep一直持有锁。Wait通常被用于线程间交互,sleep通常被用于暂停执行。


4)用Java实现阻塞队列。


这是一个相对艰难的多线程面试问题,它能达到很多的目的。第一,它可以检测侯选者是否能实际的用Java线程写程序;第二,可以检测侯选者对并发场景的理解,并且你可以根据这个问很多问题。如果他用wait()和notify()方法来实现阻塞队列,你可以要求他用最新的Java 5中的并发类来再写一次。


5)用Java写代码来解决生产者——消费者问题。


与上面的问题很类似,但这个问题更经典,有些时候面试都会问下面的问题。在Java中怎么解决生产者——消费者问题,当然有很多解决方法,我已经分享了一种用阻塞队列实现的方法。有些时候他们甚至会问怎么实现哲学家进餐问题。


6)用Java编程一个会导致死锁的程序,你将怎么解决?


这是我最喜欢的Java线程面试问题,因为即使死锁问题在写多线程并发程序时非常普遍,但是很多侯选者并不能写deadlock free code(无死锁代码?),他们很挣扎。只要告诉他们,你有N个资源和N个线程,并且你需要所有的资源来完成一个操作。为了简单这里的n可以替换为2,越大的数据会使问题看起来更复杂。通过避免Java中的死锁来得到关于死锁的更多信息。


7) 什么是原子操作,Java中的原子操作是什么?







请到「今天看啥」查看全文


推荐文章
Java编程精选  ·  Controller层代码这么写,简洁又优雅!
昨天
Java编程精选  ·  雷军删文,热搜第一!
3 天前
中央广电总台中国之声  ·  共享单车,真是一面很好的国民照妖镜
8 年前
广东配音最前线  ·  肾仔学火车俾教练叼到扑街,笑到甩晒牙!
7 年前