多线程面试题全面总结

Posted 风某人~Wind

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程面试题全面总结相关的知识,希望对你有一定的参考价值。

学会以下这些面试题,多线程面试再也不用愁。

  1. 什么是线程?
  2. 线程和进程有什么区别?
  3. 线程实现的方式有几种(四种)?
  4. Runnable接口和Callable接口的区别?
  5. start()方法和run()方法的区别?
  6. 线程的五个状态(五种状态,创建、就绪、运行、阻塞和死亡)?
  7. 怎么唤醒一个阻塞的线程?
  8. 什么是线程安全和线程不安全?
  9. 什么是多线程?优缺点?
  10. 什么是多线程的上下文切换?
  11. Java中用到的线程调度算法是什么
  12. 一个线程如果出现了运行时异常会怎么样?
  13. 线程类的构造方法、静态块是被哪个线程调用的?
  14. 锁的等级:方法锁、对象锁、类锁?
  15. volatile关键字的作用?
  16. volatile和synchronized的区别?
  17. 如果同步块内的线程抛出异常会发生什么?
  18. 同步方法和同步块,哪个是更好的选择?
  19. 如何保证多线程下 i++ 结果正确?
  20. 什么是原子操作?在Java Concurrency API中有哪些原子类(atomic classes)?
  21. 什么是synchronized?
  22. 什么是自旋锁?
  23. 什么是乐观锁和悲观锁?
  24. Java Concurrency API中的Lock接口(Lock interface)是什么?对比同步它有什么优势?
  25. synchronized和ReentrantLock的区别?
  26. ReentrantReadWriteLock读写锁的使用?
  27. 什么是Java内存模型?
  28. 什么是AQS?
  29. 什么是CAS?
  30. 什么是Unsafe?
  31. wait()和sleep()的区别?
  32. 什么是Callable和Future?
  33. 什么是FutureTask?
  34. 什么是同步容器和并发容器的实现?
  35. 如何在两个线程之间共享数据?
  36. 生产者消费者模型的作用是什么?
  37. ThreadLocal的设计理念与作用?
  38. Concurrent包里的其他东西:ArrayBlockingQueue、CountDownLatch等等。
  39. 什么是阻塞队列?如何使用阻塞队列来实现生产者-消费者模型?
  40. Semaphore有什么作用?
  41. CyclicBarrier和CountDownLatch的用法及区别?
  42. LockSupport工具?
  43. Condition接口及其实现原理?
  44. Java中如何获取到线程dump文件?
  45. Hashtable的size()方法中明明只有一条语句”return count”,为什么还要做同步?
  46. HashMap、ConcurrentHashMap底层原理
  47. ConcurrentHashMap的并发度是什么?
  48. 并发编程(concurrency)并行编程(parallellism)有什么区别?
  49. 什么是Executors框架?
  50. Executors创建线程的几种方式?
  51. ThreadPoolExecutor和Executors类下面的线程池工具方法有什么区别?
  52. ThreadPoolExecutor中的七个参数分别含义?
  53. 线程池有哪些生命周期?
  54. ThreadPool(线程池)用法与优势?
  55. 高并发、任务执行时间短的业务怎样使用线程池?并发不高、任务执行时间长的业务怎样使用线程池?并发高、业务执行时间长的业务怎样使用线程池?
  56. 如果你提交任务时,线程池队列已满,这时会发生什么?
  57. Fork/Join框架的理解?
  58. Disruptor是什么结构来存储数据?
  59. 为什么说Disruptor是单机最快的队列?
  60. 如何检测死锁?怎么预防死锁?

有时间我会整理一下答案发出来,如果有更多的多线程的面试题欢迎补充。

 

 

以上是关于多线程面试题全面总结的主要内容,如果未能解决你的问题,请参考以下文章

012期JavaSE面试题:多线程

011期JavaSE面试题:多线程

013期JavaSE面试题(十三):多线程

Java面试问题——线程全面详解总结

线程池的一些面试题

iOS面试题总结