国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

每日五道java面試題之java基礎篇(十二)

這篇具有很好參考價值的文章主要介紹了每日五道java面試題之java基礎篇(十二)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

每日五道java面試題之java基礎篇(十二),java面試題,java,開發(fā)語言,面試

第一題 談談你對AQS的理解,AQS如何實現(xiàn)可重?鎖?

  1. AQS是?個JAVA線程同步的框架。是JDK中很多鎖?具的核?實現(xiàn)框架。
  2. 在AQS中,維護了?個信號量state和?個線程組成的雙向鏈表隊列。其中,這個線程隊列,就是?來給線程排隊的,?state就像是?個紅綠燈,?來控制線程排隊或者放?的。 在不同的場景下,有不?的意義。
  3. 在可重?鎖這個場景下,state就?來表示加鎖的次數(shù)。0標識?鎖,每加?次鎖,state就加1。釋放鎖state就減1。

第二題. Sychronized的偏向鎖、輕量級鎖、重量級鎖

  1. 偏向鎖:在鎖對象的對象頭中記錄?下當前獲取到該鎖的線程ID,該線程下次如果?來獲取該鎖就可以直接獲取到了
  2. 輕量級鎖:由偏向鎖升級?來,當?個線程獲取到鎖后,此時這把鎖是偏向鎖,此時如果有第?個線程來競爭鎖,偏向鎖就會升級為輕量級鎖,之所以叫輕量級鎖,是為了和重量級鎖區(qū)分開來,輕量級鎖底層是通過?旋來實現(xiàn)的,并不會阻塞線程
  3. 如果?旋次數(shù)過多仍然沒有獲取到鎖,則會升級為重量級鎖,重量級鎖會導致線程阻塞
  4. ?旋鎖:?旋鎖就是線程在獲取鎖的過程中,不會去阻塞線程,也就?所謂喚醒線程,阻塞和喚醒這兩個步驟都是需要操作系統(tǒng)去進?的,?較消耗時間,?旋鎖是線程通過CAS獲取預期的?個標記,如果沒有獲取到,則繼續(xù)循環(huán)獲取,如果獲取到了則表示獲取到了鎖,這個過程線程?直在運?中,相對??沒有使?太多的操作系統(tǒng)資源,?較輕量。

第三題 CountDownLatch和Semaphore的區(qū)別和底層原理

CountDownLatch表示計數(shù)器,可以給CountDownLatch設置?個數(shù)字,?個線程調(diào)?CountDownLatch的await()將會阻塞,其他線程可以調(diào)?CountDownLatch的countDown()?法來對CountDownLatch中的數(shù)字減?,當數(shù)字被減成0后,所有await的線程都將被喚醒。

對應的底層原理就是,調(diào)?await()?法的線程會利?AQS排隊,?旦數(shù)字被減為0,則會將AQS中排隊的線程依次喚醒。

Semaphore表示信號量,可以設置許可的個數(shù),表示同時允許最多多少個線程使?該信號量,通過acquire()來獲取許可,如果沒有許可可?則線程阻塞,并通過AQS來排隊,可以通過release()?法來釋放許可,當某個線程釋放了某個許可后,會從AQS中正在排隊的第?個線程開始依次喚醒,直到?jīng)]有空閑許可。

第四題 線程池中阻塞隊列的作??為什么是先添加列隊?不是先創(chuàng)建最?線程?

1、?般的隊列只能保證作為?個有限?度的緩沖區(qū),如果超出了緩沖?度,就?法保留當前的任務了,阻塞隊列通過阻塞可以保留住當前想要繼續(xù)?隊的任務。
阻塞隊列可以保證任務隊列中沒有任務時阻塞獲取任務的線程,使得線程進?wait狀態(tài),釋放cpu資源。

阻塞隊列?帶阻塞和喚醒的功能,不需要額外處理,?任務執(zhí)?時,線程池利?阻塞隊列的take?法掛起,從?維持核?線程的存活、不?于?直占?cpu資源
2、在創(chuàng)建新線程的時候,是要獲取全局鎖的,這個時候其它的就得阻塞,影響了整體效率。
就好??個企業(yè)??有10個(core)正式?的名額,最多招10個正式?,要是任務超過正式??數(shù)(task > core)的情況下,??領導(線程池)不是?先擴招??,還是這10?,但是任務可以稍微積壓?下,即先放到隊列去(代價低)。10個正式?慢慢?,遲早會?完的,要是任務還在繼續(xù)增加,超過正式?的加班忍耐極限了(隊列滿了),就的招外包幫忙了(注意是臨時?)要是正式?加上外包還是不能完成任務,那新來的任務就會被領導拒絕了(線程池的拒絕策略)。

第五題 對守護線程的理解

守護線程:為所有?守護線程提供服務的線程;任何?個守護線程都是整個JVM中所有?守護線程的保姆;

守護線程類似于整個進程的?個默默?聞的?嘍嘍;它的?死?關重要,它卻依賴整個進程?運?;哪天其他線程結束了,沒有要執(zhí)?的了,程序就結束了,理都沒理守護線程,就把它中斷了;

注意: 由于守護線程的終?是?身?法控制的,因此千萬不要把IO、File等重要操作邏輯分配給它;因為它不靠譜;
守護線程的作?是什么?
舉例, GC垃圾回收線程:就是?個經(jīng)典的守護線程,當我們的程序中不再有任何運?的Thread,程序就不會再產(chǎn)?垃圾,垃圾回收器也就?事可做,所以當垃圾回收線程是JVM上僅剩的線程時,垃圾回收線程會?動離開。它始終在低級別的狀態(tài)中運?,?于實時監(jiān)控和管理系統(tǒng)中的可回收資源。

應?場景:(1)來為其它線程提供服務?持的情況;(2) 或者在任何情況下,程序結束時,這個線程必須正常且?刻關閉,就可以作為守護線程來使?;反之,如果?個正在執(zhí)?某個操作的線程必須要正確地關閉掉否則就會出現(xiàn)不好的后果的話,那么這個線程就不能是守護線程,?是?戶線程。通常都是些關鍵的事務,??說,數(shù)據(jù)庫錄?或者更新,這些操作都是不能中斷的。

thread.setDaemon(true)必須在thread.start()之前設置,否則會跑出?個IllegalThreadStateException異常。你不能把正在運?的常規(guī)線程設置為守護線程。

在Daemon線程中產(chǎn)?的新線程也是Daemon的。

守護線程不能?于去訪問固有資源,?如讀寫操作或者計算邏輯。因為它會在任何時候甚?在?個操作的中間發(fā)?中斷。

Java?帶的多線程框架,?如ExecutorService,會將守護線程轉(zhuǎn)換為?戶線程,所以如果要使?后臺線程就不能?Java的線程池。

如果我的內(nèi)容對你有幫助,請點贊,評論,收藏。創(chuàng)作不易,大家的支持就是我堅持下去的動力
每日五道java面試題之java基礎篇(十二),java面試題,java,開發(fā)語言,面試文章來源地址http://www.zghlxwxcb.cn/news/detail-829246.html

到了這里,關于每日五道java面試題之java基礎篇(十二)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 每日一道面試題之在java中,有哪些方式可以實現(xiàn)對象的實例化?

    在 Java 中,實例化對象有以下幾種方式: 使用 new : 使用 new 可以 直接調(diào)用類的構造方法 來實例化對象。 例如: 使用反射: 通過反射機制,可以 在運行時動態(tài)地實例化對象 。使用 Class 類的 newInstance() 方法 可以創(chuàng)建一個類的實例。 例如: 使用 clone() 方法

    2024年02月12日
    瀏覽(20)
  • 每日一道面試題之什么是反射?

    反射是一種自我觀察的能力,在程序運行時,對任意一個類,我們可通過 class、constructor、field、method 四個方法獲取該類的各個組成部分,在java程序運行時,對任意類,我們都可通過該類了解到其包含哪些屬性和方法,這種 動態(tài)獲取當前類對象的信息以及動態(tài)調(diào)用對象方法的

    2024年02月08日
    瀏覽(23)
  • 每日一道面試題之介紹一下Iterator

    Iterator是Java中的一個接口 , 用于遍歷集合(Collection)中的元素 。通過Iterator,可以 按順序訪問集合中的每個元素 ,而無需了解集合的內(nèi)部實現(xiàn)細節(jié)。 通過調(diào)用集合的 iterator()方法獲取Iterator對象 。例如: 使用 while循環(huán)和hasNext()方法判斷是否還有下一個元素 。例如: 使用

    2024年02月15日
    瀏覽(25)
  • 大數(shù)據(jù)面試題之Elasticsearch:每日三題(七)

    大數(shù)據(jù)面試題之Elasticsearch:每日三題(七)

    協(xié)調(diào)節(jié)點默認使用文檔ID參與計算(也支持通過routing),以便為路由提供適合的分片:shard=hash(document_id)%(num_of_primary_shards) 當分片所在的節(jié)點接收到來自協(xié)調(diào)節(jié)點的請求后,會將請求寫到Memory Buffer,然后定時(默認是每隔1秒)寫入到Filesystem Cache,這個從Memory Buffer到Filesystem C

    2024年02月15日
    瀏覽(22)
  • 每日一道面試題之list和set有什么區(qū)別?

    List和Set 是 Java集合框架中的兩個接口 ,雖然它們都繼承自Collection接口,但在使用上有一些區(qū)別。 有序性 : List是有序的集合 ,它 按照元素的插入順序進行存儲和訪問 ??梢?通過索引來訪問List中的元素 。而 Set是無序的集合 ,它不保證元素的順序,也 不能通過索引來訪問

    2024年02月16日
    瀏覽(24)
  • 每日一道面試題之Collection 和 Collections 有什么區(qū)別?

    Collection和Collections是Java集合框架中的兩個重要的概念,它們在Java集合框架中扮演不同的角色。 Collection 是 Java集合框架中的一個接口 ,它是 所有集合類的根接口 , 用于操作和管理一組對象 ,Collection接口的常見實現(xiàn)類包括 List、Set和Queue 等,分別定義了不同的存儲方式。

    2024年02月16日
    瀏覽(17)
  • 每日一道面試題之final、finally、finalize 有什么區(qū)別?

    final是Java中的 ,用于 修飾變量、方法或類 ,被final修飾的類表示 該類不能被繼承 ,被final修飾的變量表示 該變量不能賦新的值 ,被final修飾的方法表示 該方法不能被重寫 . finally是Java中的 ,用于 定義在try-catch語句塊中的一個代碼塊 ,無論是否發(fā)生異常都會執(zhí)

    2024年02月08日
    瀏覽(19)
  • 每日一道面試題之ArrayList 和 LinkedList 的區(qū)別是什么?

    ArrayList 和 LinkedList 是Java中常用的兩種集合類,它們在實現(xiàn)和使用上有一些區(qū)別,如下所示: 內(nèi)部實現(xiàn) : ArrayList 是 基于數(shù)組實現(xiàn) 的動態(tài)數(shù)組,而 LinkedList 是 基于雙向鏈表 實現(xiàn)的。 插入和刪除操作 : ArrayList 在插入和刪除元素時,需要移動其他元素來保持其數(shù)組元素位置

    2024年02月16日
    瀏覽(45)
  • 每日一道面試題之介紹一下常見的異常類有哪些?

    常見的異常類包括: NullPointerException(空指針異常): 例如: SQLException:(數(shù)據(jù)庫相關的異常): 例如: IndexOutOfBoundsException(下標越界異常): 例如: IllegalArgumentException(非法參數(shù)異常): 例如: IllegalStateException(非法狀態(tài)異常): 例如: ClassCastException(類型轉(zhuǎn)換異常

    2024年02月08日
    瀏覽(20)
  • 每日一道面試題之如何實現(xiàn)數(shù)組和 List 之間的轉(zhuǎn)換?

    要實現(xiàn)數(shù)組和List之間的轉(zhuǎn)換,可以使用Java中的 Arrays類 和 Collections類 提供的方法。 數(shù)組轉(zhuǎn)換為List: 使用 Arrays類 的 asList()方法 可以 將數(shù)組轉(zhuǎn)換為List 。這個方法接受一個數(shù)組作為參數(shù),并返回一個包含數(shù)組元素固定大小的List。 舉例: 輸出如下所示: List轉(zhuǎn)換為數(shù)組: 使

    2024年02月16日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包