(小奇JAVA面試)每日10道Java面試題打卡—Java基礎篇3

      網友投稿 799 2025-04-01

      二十一、說說你對線程安全的理解


      與其說是線程安全,不如說是內存安全,堆是共享內存,可以被所有線程訪問。

      堆 是進程和線程共有的空間,每一個進程里面有多個線程,分全局堆和局部堆,全局堆就是所有沒有分配的空間,局部堆就是分配給用戶的空間,堆在操作系統對進程初始化的時候分配,運行過程中也可以向系統要額外的堆,但是用完了還要還給操作系統,要不然就是內存泄漏

      棧 是每個線程獨有的,所以棧是線程安全的,每個線程的棧互相獨立。

      目前主流的操作系統都是多任務的,即多個進程同事運行,為了保證安全,每個進程只能訪問分配給自己的內存空間,而不能訪問別的進程的,這是由操作系統保障的。

      在每個進程的內存空間中都會有一塊特殊的公共區域,通常稱為堆(內存),進程內的所有線程都可以訪問這個區域,所以這個區域是線程不安全的。

      二十二、Thread和Runable的區別

      Thread和Runnable的實質是繼承關系,沒有可比性,無論使用Runnable還是Thread,都會new Thread,然后執行run()方法,用法上,如果有復雜的線程操作需求,那就選擇繼承Thread,如果只是簡單的執行一個任務,那就實現runnable。

      二十三、說說你對守護線程的理解

      守護線程:為所有非守護線程提供服務的線程,任何一個守護線程都是在整個JVM中所有非守護線程的保姆。

      守護線程類似于整個進程的一個小兵,它的生死無關重要,但是它卻依賴整個進行而運行,如果其他線程結束了,沒有要執行的了,程序就結束了,守護線程立馬就中斷了。

      注意:由于守護線程的終止是自身無法控制的,因此不要把IO、File等重要操作邏輯分配給它,因為它不靠譜。

      二十四、ThreadLocal的原理的使用場景

      每一個Thread對象均含有一個ThreadLocalMap類型的成員變量threadLocal,它存儲本線程中所有ThreadLocal對象及其對應的值。

      當執行set方法時,ThreadLocal首先會獲取當前線程對象,然后獲取當前線程的ThreadLocalMap對象,再以當前ThreadLocal對象為key,將值存儲進ThreadLocalMap對象中。

      get方法執行過程類似,ThreadLocal首先會獲取當前線程對象,然后獲取當前線程的ThreadLocalMap對象,再以當前ThreadLocal對象為key,獲取對應的value。

      使用場景:

      1、在進行對象跨層傳遞的時候,使用ThreadLocal可以避免多次傳遞,打破層次間的約束。

      2、線程間數據隔離。

      3、進行實物操作,用于存儲線程事務信息。

      4、數據庫連接,Session會話管理。

      二十五、ThreadLocal內存泄漏原因,如何避免

      內存泄漏為程序在申請內存后,無法釋放已申請的內存空間,一次內存泄漏危害可以忽略,但內存泄漏堆積后果很嚴重。

      不再會被使用的對象或者變量占用的內存不能被回收,就是內存泄漏。

      (小奇JAVA面試)每日10道Java面試題打卡—Java基礎篇3

      強引用:使用最普通的引用 new,一個對象具有強引用,不會被垃圾回收器回收,當內存空間不足,java虛擬機寧愿拋出outOfMemoryError錯誤,使程序異常終止,也不回收這種對象。

      如果想取消強引用和某個對象之間的關聯,可以顯式地將引用復制為null,這樣可以使JVM在合適的時間就會回收該對象。

      弱引用:jvm進行垃圾回收時,無論內存是否充足,都會回收被弱引用關聯的對象,在java中,用java.lang.ref.WeakReference類來表示,可以在緩存中使用弱引用。

      ThreadLocal的實現原理,每一個Thread維護了一個ThreadLocalMap,key為使用弱引用的ThreadLocal實例,value為線程變量的副本。

      ThreadLocal正確的使用方法:

      每次使用完ThreadLocal都調用它的remove()方法清除數據。

      二十六、并發、并行、串行的區別

      串行在時間上不可能發生重疊,前一個任務沒搞定,下一個任務就只能等著。

      并行在時間上是重疊的,兩個任務在同一時刻互不干擾的同時執行。

      并發允許兩個任務彼此干擾,統一時間點,只有一個任務運行,交替執行。

      二十七、并發的三大特性

      1、原子性

      原子性是指在一個操作中cpu不可以在中途暫停然后再調度,即不被中斷操作,要不全部執行完成,要不都不執行,就好比轉賬,從賬戶A向賬戶B轉1000元,那么必然包括2個操作:從賬戶A減去1000元,往賬戶B加上1000元。2個操作必須全部完成。

      2、可見性

      當多個線程訪問同一個變量時,一個線程修改了這個變量的值,其他線程可以立刻看到這個新變化的值。

      3、有序性

      虛擬機在進行代碼編譯時,對于那些改變順序之后不會對最終結果造成影響的代碼,虛擬機不一定會按照我們寫的代碼順序來執行,有可能將他們重排序,實際上,對于有些代碼進行重排序之后,雖然對變量的值沒有造成影響,但有可能會出現線程安全問題。

      二十八、為什么要用線程池?解釋下線程池參數

      1、降低資源消耗:提高線程利用率,降低創建和銷毀線程的消耗。

      2、提高響應速度:任務來了,直接有現成可用可執行,而不是先創建線程,再執行。

      3、提高線程的可管理性:線程是稀缺資源,使用線程池可以統一分配調優監控。

      1》 corePoolSize代表核心線程數,也就是正常情況下創建工作的線程數,這些線程創建后并不會消除,而是一種常駐線程。

      2》maxinumPoolSize代表最大線程數,它與核心線程數相對應,表示最大允許被創建的線程數,比如當前任務比較多,將核心線程數都用完了,還無法滿足需求時,此時就會創建新的線程,但是線程池內線程總數不會超過最大線程數。

      3》keepAliveTime、unit表示超出核心線程數之外的線程的空閑存活時間,也就是核心線程不會消除,但是超過核心線程數的部分線程如果空閑一定的時間則會被消除,我們可以通過setkeepAliveTime來設置空閑時間。

      4》workQueue用來存放待執行的任務,假設我們現在核心線程都已被使用,還有任務進來則全部放入隊列,直到整個隊列被放滿但任務還在持續進入則會開始創建新的線程。

      5》ThreadFactory實際上是一個線程工廠,用來生產線程執行任務。

      6》Handler:任務拒絕策略,當達到最大線程數,線程池已經沒有能力繼續處理新提交的任務時,就執行任務拒絕策略。

      二十九、簡述線程池處理流程

      三十、線程池中阻塞隊列的作用?為什么是先添加隊列而不是先創建最大線程

      1、一般的隊列只能保證作為一個有限長度的緩沖區,如果超出了緩沖長度,就無法保留當前的任務了,阻塞隊列通過阻塞可以保留住當前想要繼續入隊的任務。

      2、阻塞隊列可以保證任務隊列中沒有任務時阻塞獲取任務的線程,使得線程進入wait狀態,釋放cpu資源。

      3、阻塞隊列自帶阻塞和喚醒的功能,不需要額外處理,無任務執行時,線程池利用阻塞隊列的take方法掛起,從而維持核心線程的存活,不至于一直占用cpu的資源。

      4、在創建新線程的時候,要獲取全局鎖的,這個時候其它的就得阻塞,影響了整體效率,所以說線程的創建是比較消耗資源的。

      Java 任務調度

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:在wps表格中如何設置文字水平居中(wps文字水平居中在哪里設置)
      下一篇:如何刪除word其中一頁
      相關文章
      亚洲欧美日韩国产成人| 亚洲成AV人片在| 亚洲高清视频在线播放| 精品国产香蕉伊思人在线在线亚洲一区二区 | 国产亚洲综合久久系列| 国产性爱在线观看亚洲黄色一级片 | 亚洲综合av一区二区三区| 亚洲国产成a人v在线| 亚洲美女视频网址| 中文字幕亚洲综合久久| 亚洲麻豆精品果冻传媒| 亚洲精品日韩专区silk| 亚洲国产成人在线视频| 亚洲中文字幕无码一去台湾| 亚洲一区二区三区高清不卡| 亚洲色最新高清av网站| 亚洲精品无码人妻无码| 国产青草亚洲香蕉精品久久| 亚洲А∨精品天堂在线| 毛茸茸bbw亚洲人| 狠狠色伊人亚洲综合成人| 亚洲AV无码成人专区片在线观看 | 亚洲人成色99999在线观看| 亚洲国产一区二区三区在线观看 | 亚洲色图在线播放| 亚洲国产精品综合久久久| 精品亚洲成A人无码成A在线观看 | 亚洲国产精品VA在线观看麻豆| 亚洲av中文无码乱人伦在线咪咕| 亚洲电影一区二区| 亚洲国产成人超福利久久精品| 亚洲AV无码一区二区三区人| 亚洲人成网站免费播放| 亚洲Av无码乱码在线znlu| 亚洲综合网站色欲色欲| 亚洲精品高清久久| 亚洲人配人种jizz| 国产亚洲精品成人久久网站 | 国产成人毛片亚洲精品| 亚洲av色福利天堂| 亚洲午夜电影在线观看高清|