好程式設計師Java教程分享Java多執行緒常見面試題

好程式設計師IT發表於2019-11-11

  好程式設計師Java 教程分享Java 多執行緒 常見面試題,Java 多執行緒相關面試題可以說是不可避免的,所以今天好程式設計師將為大家分享一些。

 

  一、 現在有T1 T2 T3 三個執行緒,你怎樣保證 T2 T1 執行完後執行, T3 T2 執行完後執行 ?

 

  這個執行緒問題通常會在第一輪或電話面試階段被問到,目的是檢測你對join ”方法是否熟悉。這個多執行緒問題比較簡單,可以用 join 方法實現。

 

  二、 Java Lock 介面比 synchronized 塊的優勢是什麼 ?

 

  你需要實現一個高效的快取,它允許多個使用者讀,但只允許一個使用者寫,以此來保持它的完整性,你會怎樣去實現它?

 

  lock 介面在多執行緒和併發程式設計中大的優勢是它們為讀和寫分別提供了鎖,它能滿足你寫像 ConcurrentHashMap 這樣的高效能資料結構和有條件的阻塞。 Java 執行緒面試的問題越來越會根據面試者的回答來提問。我強烈建議在你去參加多執行緒的面試之前認真讀一下 Locks ,因為當前其大量用於構建電子交易終統的客戶端快取和交易連線空間。

 

  三、 java wait sleep 方法的不同 ?

 

  通常會在電話面試中經常被問到的Java 執行緒面試問題。大的不同是在等待時 wait 會釋放鎖,而 sleep 一直持有鎖。 Wait 通常被用於執行緒間互動, sleep 通常被用於暫停執行。

 

  四、 Java 實現阻塞佇列。

 

  這是一個相對艱難的多執行緒面試問題,它能達到很多的目的。第一,它可以檢測侯選者是否能實際的用Java 執行緒寫程式 ; 第二,可以檢測侯選者對併發場景的理解,並且你可以根據這個問很多問題。如果他用 wait notify 方法來實現阻塞佇列,你可以要求他用新的 Java5 中的併發類來再寫一次。

 

  五、Java 中的 volatile 關鍵是什麼作用 ? 怎樣使用它 ? Java 中它跟 synchronized 方法有什麼不同 ?

 

  自從Java5 Java 記憶體模型改變以後,基於 volatile 關鍵字的執行緒問題越來越流行。應該準備好回答關於 volatile 變數怎樣在併發環境中確保可見性。

 

  六、 Java CycliBarriar CountdownLatch 有什麼區別 ?

 

   這個執行緒問題主要用來檢測你是否熟悉JDK5 中的併發包。這兩個的區別是 CyclicBarrier 可以重複使用已經透過的障礙,而 CountdownLatch 不能重複使用。  

  

  七、 你將如何使用threaddump? 你將如何分析 Threaddump?

 

  在UNIX 中你可以使用 kill-3 ,然後 threaddump 將會列印日誌,在 windows 中你可以使用” CTRL+Break ”。非常簡單和專業的執行緒面試問題,但是如果他問你怎樣分析它,就會很棘手。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2663527/,如需轉載,請註明出處,否則將追究法律責任。

相關文章