JAVA面試筆試之-java 多線程

 1.串行與併發;進程和線程
          串行:當有多個任務需要執行的時候,多個任務之間是按照一定的順序執行的。
          併發:多個任務同時執行。
          程序中串行和併發是同時存在的。
          
                 進程和線程都是爲了實現併發而存在的,

                    

2.創建線程的方式及實現

4.說說 CountDownLatch、CyclicBarrier 原理和區別
     java 同時啓動多個線程

7.ThreadLocal 原理分析,ThreadLocal爲什麼會出現OOM,出現的深層次原理
      ThreadLocal 用來保存線程獨享的數據

8.講講線程池的實現原理

9.線程池的幾種實現方式
     繼承Tread

10.線程的生命週期,狀態是如何轉移的  可參考:《Java多線程編程核心技術》

11.說說線程安全問題,什麼是線程安全,如何保證線程安全

12.線程安全
       就是多線程訪問同一代碼,不會產生不確定結果。(比如死鎖) 
  
13.如何避免死鎖        
       1.  控制加鎖的順序
       2.設置加鎖超時時間
       

 14.使用synchronized同步代碼塊,或者用Lock鎖 
  
 15.多線程併發情況下,線程共享的變量改爲方法局部級變量

16.產生死鎖的四個條件(互斥、請求與保持、不剝奪、循環等待)
     兩個或兩個以上的線程,同時訪問相同的資源,互相持有對方需要訪問的實例,處於互相等待對方釋放的狀態下會發生死鎖。

17.如何檢查死鎖(通過jConsole檢查死鎖)

19.volatile 實現原理(禁止指令重排、刷新內存)

20.synchronized 實現原理(對象監視器)

21.synchronized 與 lock 的區別
    synchronized 是一個關鍵字,會自動釋放鎖
    lock是一個類,它提供了更多的方法,可以處理一些異常情況,比如說設定加鎖超時時間,讀取文件不衝突情況下可以一異步,而寫文件時加鎖同步。
    需要主動去釋放鎖,不然會出現死鎖

27.Java 8並法包下常見的併發類 

  28.設計5個線程,讓這5個線程同時啓動, 說一下思路

  29.設計4個線程,兩個線程向集合A中添加數據,另外兩個線程從集合A中移除數據,手寫代碼( 遇到兩次筆試 )
  
  30.講講ThreadLocal的實現原理;作爲變量的線程隔離方式,其內部是和做的?
  
  31.講講獨佔鎖ReetrantLock 原理
  
  32.讀寫鎖 ReetrantReadWriteLock原理?
  
  
  
  
  
  
  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章