日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

java开发实战经典答案百度云,含面试题+答案

發布時間:2023/11/30 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java开发实战经典答案百度云,含面试题+答案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、上下文切換

上下文定義

cpu發生進程或者線程切換時,所依賴的數據集合,比如一個函數有外部變量,函數運行時,必須獲取外部變量,這些變量值的集合就是上下文。

引發問題

對于CPU密集型任務,多線程處理會發生上下文切換,會影響到執行速度,如果時IO密集型,多線程技術優點盡顯。

如何減少上下文切換

  • 無鎖并發編程,鎖的獲取與釋放會發生上下文切換,多線程時會影響效率。無鎖并發編程就是將數據分塊,每個線程處理各自模塊。比如LongAdder中部分代碼。
  • CAS算法,并發編程時通過CAS算法更新數據,而不必加鎖。如Java的atomic包下的工具類。
  • 使用最少線程,減少不必要的線程創建,自定義線程池。
  • 使用協程,在單線程中維護多任務調度,處理任務間切換,Golang對于協程的使用很強大。

2、死鎖

死鎖定義

死鎖是進程死鎖的簡稱,是由Dijkstra于1965年研究銀行家算法時首先提出來的。
系統發生死鎖現象不僅浪費大量的系統資源,甚至導致整個系統崩潰,帶來災難性后果。

產生死鎖原因

  • 系統資源不足
  • 進程推進順序不當
  • 資源分配不合理

死鎖產生的必要條件

  • 互斥條件:一個資源只能被一個進程或者線程使用。
  • 請求和保持條件:一個進程或者線程,請求資源的時候發生阻塞,對已經獲取的資源保持不放。
  • 不可剝奪條件:進程或者線程以獲得的資源,在未使用完成時,不能強行剝奪。
  • 循環等待條件:若干進程或者線程形成一種頭尾相接的循環等待的資源關系。

這四分條件是死鎖產生的必要條件,只要發生死鎖,這些條件必然成立,而只要上述條件之一不滿足,就不會發生死鎖。

如何避免死鎖

  • 以確定的順序獲得鎖
  • 加鎖時限
  • Lock接口提供了boolean tryLock(long time, TimeUnit unit) throws InterruptedException方法,該方法可以按照固定時長等待鎖,因此線程可以在獲取鎖超時以后,主動釋放之前已經獲得的所有的鎖。

    最后

    針對最近很多人都在面試,我這邊也整理了相當多的面試專題資料,也有其他大廠的面經。希望可以幫助到大家。

    下面的面試題答案都整理成文檔筆記。也還整理了一些面試資料&最新2021收集的一些大廠的面試真題(都整理成文檔,小部分截圖),有需要的可以戳這里免費領取

    最新整理電子書

    [外鏈圖片轉存中…(img-7iOtNfLv-1624947253361)]

    最新整理電子書

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的java开发实战经典答案百度云,含面试题+答案的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。