1. 程式人生 > >史上最全Java多線程面試題及答案

史上最全Java多線程面試題及答案

blog 上下文 exec 線程 單例 通信 流轉 排查 創建

  1. 多線程有什麽用?

  2. 線程和進程的區別是什麽?

  3. Java實現線程有哪幾種方式?

  4. 啟動線程方法start()和run()有什麽區別?

  5. 怎麽終止一個線程?如何優雅地終止線程?

  6. 一個線程的生命周期有哪幾種狀態?它們之間如何流轉的?

  7. 線程中的wait()和sleep()方法有什麽區別?

  8. 多線程同步有哪幾種方法?

  9. 什麽是死鎖?如何避免死鎖?

  10. 多線程之間如何進行通信?

  11. 線程怎樣拿到返回結果?

  12. violatile關鍵字的作用?

  13. 新建T1、T2、T3三個線程,如何保證它們按順序執行?

  14. 怎麽控制同一時間只有3個線程運行?

  15. 為什麽要使用線程池?

  16. 常用的幾種線程池並講講其中的工作原理。

  17. 線程池啟動線程submit()和execute()方法有什麽不同?

  18. CyclicBarrier和CountDownLatch的區別?

  19. 什麽是活鎖、饑餓、無鎖、死鎖?

  20. 什麽是原子性、可見性、有序性?

  21. 什麽是守護線程?有什麽用?

  22. 怎麽中斷一個線程?如何保證中斷業務不影響?

  23. 一個線程運行時發生異常會怎樣?

  24. 什麽是重入鎖?

  25. Synchronized有哪幾種用法?

  26. Fork/Join框架是幹什麽的?

  27. 線程數過多會造成什麽異常?

  28. 說說線程安全的和不安全的集合。

  29. 什麽是CAS算法?在多線程中有哪些應用。

  30. 怎麽檢測一個線程是否擁有鎖?

  31. Jdk中排查多線程問題用什麽命令?

  32. 線程同步需要註意什麽?

  33. 線程wait()方法使用有什麽前提?

  34. Fork/Join框架使用有哪些要註意的地方?

  35. 線程之間如何傳遞數據?

  36. 保證"可見性"有哪幾種方式?

  37. 說幾個常用的Lock接口實現鎖。

  38. ThreadLocal是什麽?有什麽應用場景?

  39. ReadWriteLock有什麽用?

  40. FutureTask是什麽?

  41. 怎麽喚醒一個阻塞的線程?

  42. 不可變對象對多線程有什麽幫助?

  43. 多線程上下文切換是什麽意思?

  44. Java中用到了什麽線程調度算法?

  45. Thread.sleep(0)的作用是什麽?

  46. Java內存模型是什麽,哪些區域是線程共享的,哪些是不共享的

  47. 什麽是樂觀鎖和悲觀鎖?

  48. Hashtable的size()方法為什麽要做同步?

  49. 同步方法和同步塊,哪種更好?

  50. 什麽是自旋鎖?

  51. Runnable和Thread用哪個好?

  52. Java中notify和notifyAll有什麽區別?

  53. 為什麽wait/notify/notifyAll這些方法不在thread類裏面?

  54. 為什麽wait和notify方法要在同步塊中調用?

  55. 為什麽你應該在循環中檢查等待條件?

  56. Java中堆和棧有什麽不同?

  57. 你如何在Java中獲取線程堆棧?

  58. 如何創建線程安全的單例模式?

  59. 什麽是阻塞式方法?

  60. 提交任務時線程池隊列已滿會時發會生什麽?

史上最全Java多線程面試題及答案