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的框架。        包含如下的四点,是分布式的基础...
  • bestone0213
  • bestone0213
  • 2015年10月08日 16:28
  • 2030

15+N个顶级网上流行的Java多线程面试题及自己总结的答案(遇到即会更新)

1)现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?...
  • Crazy_Women
  • Crazy_Women
  • 2014年05月27日 17:09
  • 1371

java同步锁中synchronized和Lock接口类的区别

Lock提供了和sychronized类似的同步功能,只是在使用时需要显示地获取和释放锁。虽然Lock缺少了sychronized隐式获取释放锁的便捷性,但是却拥有了锁获取与是释放的可操作性、可中断的...
  • xuqiaobo
  • xuqiaobo
  • 2016年05月23日 10:54
  • 1678

15个顶级Java多线程面试题及回答 / Java程序员面试中的多线程问题

http://wenku.baidu.com/link?url=-7RVShQCzkHaRbyPdGP-oeVXgZ7t4mS2oqXevpzweesI_Heof5zqc_Wsvhhi8pZSU7xQ...
  • liangxw1
  • liangxw1
  • 2016年04月19日 07:01
  • 25601

Java多线程面试题总结(常见多线程面试题)

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

Java多线程面试题归纳

1、线程的基本概念、线程的基本状态以及状态之间的关系
  • hai_cheng001
  • hai_cheng001
  • 2014年07月24日 00:25
  • 9656

Java多线程面试常见核心问题总结

1. 有T1、T2、T3三个线程,如何怎样保证T2在T1执行完后执行,T3在T2执行完后执行?         使用join方法。         join方法的功能是使异步执行的线程变成同步执行。即...
  • HiJson
  • HiJson
  • 2016年10月21日 22:22
  • 6359

JAVA多线程和并发基础面试题

多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一。在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问题。(校对注:非常赞同这个观...
  • dreamthen
  • dreamthen
  • 2014年05月23日 11:28
  • 37897

JAVA笔试面试题系列之----①多线程

1.      进程和线程: 进程:正在进行的程序。每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元。 线程:进程内部的一条执行路径或者一个控制单元。 两者的区别: 一...
  • qiaoqiao0609
  • qiaoqiao0609
  • 2016年04月19日 14:10
  • 1395

【Java多线程与并发库】18.java线程面试题1

现有的程序代码模拟产生了16个日志对象,并且需要运行16秒才能打印完这些日志,请在程序 中增加4个线程去调用parseLog()方法来分头打印这16个日志对象,程序只需要运行4秒即可打印 玩这些日志对...
  • u013517797
  • u013517797
  • 2016年11月10日 15:23
  • 798
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java多线程面试题
举报原因:
原因补充:

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