Java多线程面试题

转载 2015年07月07日 20:09:01
1)现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行? 

这个线程问题通常会在第一轮或电话面试阶段被问到,目的是检测你对”join”方法是否熟悉。这个多线程问题比较简单,可以用join方法实现。

Java多线程中join方法的理解

2)在Java中Lock接口比synchronized块的优势是什么?你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它? 
lock接口在多线程和并发编程中最大的优势是它们为读和写分别提供了锁,它能满足你写像ConcurrentHashMap这样的高性能数据结构和有条件的阻塞。Java线程面试的问题越来越会根据面试者的回答来提问。我强烈建议在你去参加多线程的面试之前认真读一下Locks,因为当前其大量用于构建电子交易终统的客户端缓存和交易连接空间。

Java并发编程:Lock

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

sleep和wait有什么区别


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

Java阻塞队列的实现

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

个java生产者消费者代码的问题

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

java 死锁及解决

7)什么是原子操作,Java中的原子操作是什么?
非常简单的java线程面试问题,接下来的问题是你需要同步一个原子操作。
8) Java中的volatile关键是什么作用?怎样使用它?在Java中它跟synchronized方法有什么不同? 
自从Java 5和Java内存模型改变以后,基于volatile关键字的线程问题越来越流行。应该准备好回答关于volatile变量怎样在并发环境中确保可见性、顺序性和一致性。

java中关键字volatile的作用

9) 什么是竞争条件?你怎样发现和解决竞争?
10) 你将如何使用thread dump?你将如何分析Thread dump?
11) 为什么我们调用start()方法时会执行run()方法,为什么我们不能直接调用run()方法? 
这是另一个非常经典的java多线程面试问题。这也是我刚开始写线程程序时候的困惑。现在这个问题通常在电话面试或者是在初中级Java面试的第一轮被问到。这个问题的回答应该是这样的,当你调用start()方法时你将创建新的线程,并且执行在run()方法里的代码。但是如果你直接调用run()方法,它不会创建新的线程也不会执行调用线程的代码。阅读我之前写的《start与run方法的区别》这篇文章来获得更多信息。

相关文章推荐

java中lock与synchronized同步的解析

现在soa 与分布式计算已经成为互联网公司技术的标配        那他包含的知识点应该熟悉了解,并以此为基础,去应用,调优各种soa的框架。        包含如下的四点,是分布式的基础...

深入研究 Java Synchronize 和 Lock 的区别与用法

在分布式开发中,锁是线程控制的重要途径。Java为此也提供了2种锁机制,synchronized和lock。做为Java爱好者,自然少不了对比一下这2种机制,也能从中学到些分布式开发需要注意的地方。 ...

Java多线程面试题归纳

1、线程的基本概念、线程的基本状态以及状态之间的关系

Java面试题整理三(各种多线程)

这部分内容较多,慢慢补充,稍安勿躁! 先来张状态转换图: 再来点简单的问题,引入多线程的概念 问题一:进程,线程,程序的区别? 答: 1. 进程,线程,程序的定义 程序:一组指令的有效集合 进程...

java并发多线程面试题和答案

1.java中有几种方法可以实现一个线程? 两种,一种是实现Runnable接口,另一种是继承Thread 2.如何停止一个正在运行的线程?   this.stop()方法结束线...

空中网面试题3--Java多线程

下午看了张孝祥老师的多线程之后,自己也开始试着做了一个关于空中网面试题目的 看到题目之后自己先做了一个,之后再看老师的代码。。 果然是NB啊~~ 这么简单就解决了。。。  原先题目为:现在...

java多线程面试题TOP50

不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。大多数待遇丰厚的Java开发职位都要求开发者精通多线程...

学习java多线程的笔记4--传智播客_张孝祥_空中网挑选实习生的面试题(来源于视频)

摘自传智播客_张孝祥_空中网挑选实习生的面试题 视频教程的,(主要是线程与队列的使用). 与本人无关,仅供以后参考使用 空中网4k/5k月薪挑选大四实习生的线程题     两年前,我们一...

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

在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分。如果你想获得任何股票投资银行的前台资讯职位,那么你应该准备很多关于多线程的问题。在投资银行业务中多线程和并发是一个非常受欢迎的话题,特...

Java面试题_多线程

Java面试题_多线程 前段时间换工作,碰到一道面试题,当时没答出来,贴出来记录一下。 1 题目 使用两个线程,打印出 线程1-1,线程1-2,线程1-3,线程2-4,线程2-5,线程2-6...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java多线程面试题
举报原因:
原因补充:

(最多只允许输入30个字)