第十一章、 多線程的八大核心總結

1、八大核心面試問題總結

  • 有多少種實現線程的方法?思路有5點
  • 實現Runnable接口和繼承Thread類哪種方式更好?
  • 一個線程兩次調用start()方法會出現什麼情況?爲什麼?
  • 既然start()方法會調用run()方法,爲什麼我們選擇調用start()方法,而不是直接調用run()方法呢?
  • 如何停止線程
  • 如何處理不可中斷的阻塞
  • 線程有哪幾種狀態?生命週期是什麼?
  • 用程序實現兩個線程交替打印0~100的奇偶數
  • 手寫生產者消費者設計模式
  • 爲什麼wait()需要在同步代碼塊內使用,而sleep()不需要
  • 爲什麼線程通信的方法wait(),notify()和notifyAll()被定義在Object類裏?而sleep定義在Thread類裏?
  • wait方法是屬於Object對象的,那調用Thread.wait會怎麼樣?
  • 如何選擇用notify還是notifyAll?
  • notifyAll之後所有的線程都會再次搶奪鎖,如果某線程搶奪失敗怎麼辦?
  • 用suspend()和resume()來阻塞線程可以嗎?爲什麼?
  • wait/notify、sleep異同(方法屬於哪個對象?線程狀態怎麼切換?)
  • 在join期間,線程處於哪種線程狀態?
  • 守護線程和普通線程的區別
  • 我們是否需要把線程設置爲守護線程?
  • run方法是否可以拋出異常?如果拋出異常,線程的狀態會怎麼樣?
  • 線程中如何處理某個未處理異常?
  • 什麼是多線程的上下文切換?
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章