专栏名称: 程序员大咖
为程序员提供最优质的博文、最精彩的讨论、最实用的开发资源;提供最新最全的编程学习资料:PHP、Objective-C、Java、Swift、C/C++函数库、.NET Framework类库、J2SE API等等。并不定期奉送各种福利。
目录
相关文章推荐
程艺Truman  ·  程艺Truman 20250604171709 ·  昨天  
蚂蚁技术AntTech  ·  报名开启 | ... ·  23 小时前  
51CTO技术栈  ·  突发!刚被OpenAI收购就惨遭Claude ... ·  昨天  
极客之家  ·  22k star,微软硬核开源,让 ... ·  2 天前  
51好读  ›  专栏  ›  程序员大咖

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

程序员大咖  · 公众号  · 程序员  · 2017-11-20 10:24

正文

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


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中的死锁来得到关于死锁的更多信息。







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