这是一篇翻译文章,原文来自http://javarevisited.blogspot.com/2011/07/java-multi-threading-interview.html
1 有线程t1、t2、t3,如何确保线程t2在线程t1运行完成后运行,线程t3在线程t2运行完成后运行
2 显示的锁比同步代码块有哪些优势,如何实现一个高性能的读多写少缓存服务器
3 sleep()方法和wait()方法有什么区别
http://javarevisited.blogspot.sg/2011/12/difference-between-wait-sleep-yield.html
4 用java实现一个阻塞队列
5 用java解决生产者消费者问题
http://javarevisited.blogspot.sg/2012/02/producer-consumer-design-pattern-with.html
6 写一个可能导致死锁的程序,并修复死锁问题
http://javarevisited.blogspot.com/2010/10/what-is-deadlock-in-java-how-to-fix-it.html
7 什么是原子操作 什么是java的原子操作
http://javarevisited.blogspot.com/2011/04/synchronization-in-java-synchronized.html
8 volatile关键字如何使用,与java的同步方法有什么区别
http://javarevisited.blogspot.com/2011/06/volatile-keyword-java-example-tutorial.html
9 什么是条件竞争,如何发现条件竞争 并解决
http://javarevisited.blogspot.sg/2012/02/what-is-race-condition-in.html
10 How will you take thread dump in Java? How will you analyze Thread dump?
11 为什么调用线程的start()方法可以执行线程并运行run()方法,为什么不能直接调用run()方法
http://javarevisited.blogspot.sg/2012/03/difference-between-start-and-run-method.html
12 如何唤醒阻塞线程
http://javarevisited.blogspot.sg/2012/02/what-is-blocking-methods-in-java-and.html
13 CyclicBarriar和CountdownLatch的不同之处
14 什么是不可变对象,对写并发程序有什么帮助
15 你面对过哪些常见的并发问题,如何解决
Memory-interference, race conditions, deadlock, live lock and starvation
补充的10个问题
1 在java中绿色线程和本地线程区别
2 线程和进程区别
3 什么是多线程中的上下文切换
4 死锁和活锁(livelock)的区别 死锁和饥饿(starvation)的区别
5 java里使用线程调度算法
6 什么是java的线程调度
7 线程中如何处理异常
8 什么是线程组 为什么在java中不推荐使用
9 为什么执行器框架比自己管理线程更好
10 如何在Windows和Linux上查找哪个线程使用的CPU时间最长