9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
學習啦>創業指南>職場>面試題>

java多線程面試題

時間: 護托1061 分享

  一個線程局部變量(ThreadLocal variables)為每個線程方便地提供了一個單獨的變量。下面就由學習啦小編為大家介紹一下java多線程面試題的文章,歡迎閱讀。

  java多線程面試題篇1

  0.Java 中多線程同步是什么?

  在多線程程序下,同步能控制對共享資源的訪問。如果沒有同步,當一個 Java 線程在修改一個共享變量時,另外一個線程正在使用或者更新同一個變量,這樣容易導致程序出現錯誤的結果。

  1.解釋實現多線程的幾種方法?

  一 Java 線程可以實現 Runnable 接口或者繼承 Thread 類來實現,當你打算多重繼承時,優先選擇實現 Runnable。

  2.Thread.start ()與 Thread.run ()有什么區別?

  Thread.start ()方法(native)啟動線程,使之進入就緒狀態,當 cpu 分配時間該線程時,由 JVM 調度執行 run ()方法。

  3.為什么需要 run ()和 start ()方法,我們可以只用 run ()方法來完成任務嗎?

  我們需要 run ()&start ()這兩個方法是因為 JVM 創建一個單獨的線程不同于普通方法的調用,所以這項工作由線程的 start 方法來完成,start 由本地方法實現,需要顯示地被調用,使用這倆個方法的另外一個好處是任何一個對象都可以作為線程運行,只要實現了 Runnable 接口,這就避免因繼承了 Thread 類而造成的 Java 的多繼承問題。

  java多線程面試題篇2

  1.什么是 ThreadLocal 類,怎么使用它?

  ThreadLocal 是一個線程級別的局部變量,并非“本地線程”。ThreadLocal 為每個使用該變量的線程提供了一個獨立的變量副本,每個線程修改副本時不影響其它線程對象的副本(譯者注)。

  下面是線程局部變量(ThreadLocal variables)的關鍵點:

  一個線程局部變量(ThreadLocal variables)為每個線程方便地提供了一個單獨的變量。

  ThreadLocal 實例通常作為靜態的私有的(private static)字段出現在一個類中,這個類用來關聯一個線程。

  當多個線程訪問 ThreadLocal 實例時,每個線程維護 ThreadLocal 提供的獨立的變量副本。

  常用的使用可在 DAO 模式中見到,當 DAO 類作為一個單例類時,數據庫鏈接(connection)被每一個線程獨立的維護,互不影響。(基于線程的單例)

  ThreadLocal 難于理解,下面這些引用連接有助于你更好的理解它。

  《Good article on ThreadLocal on IBM DeveloperWorks 》、《理解 ThreadLocal》、《Managing data : Good example》、《Refer Java API Docs》

  2.什么時候拋出 InvalidMonitorStateException 異常,為什么?

  調用 wait ()/notify ()/notifyAll ()中的任何一個方法時,如果當前線程沒有獲得該對象的鎖,那么就會拋出 IllegalMonitorStateException 的異常(也就是說程序在沒有執行對象的任何同步塊或者同步方法時,仍然嘗試調用 wait ()/notify ()/notifyAll ()時)。由于該異常是 RuntimeExcpetion 的子類,所以該異常不一定要捕獲(盡管你可以捕獲只要你愿意).作為 RuntimeException,此類異常不會在 wait (),notify (),notifyAll ()的方法簽名提及。

  java多線程面試題篇3

  1.Sleep ()、suspend ()和 wait ()之間有什么區別?

  Thread.sleep ()使當前線程在指定的時間處于“非運行”(Not Runnable)狀態。線程一直持有對象的監視器。比如一個線程當前在一個同步塊或同步方法中,其它線程不能進入該塊或方法中。如果另一線程調用了 interrupt ()方法,它將喚醒那個“睡眠的”線程。

  注意:sleep ()是一個靜態方法。這意味著只對當前線程有效,一個常見的錯誤是調用t.sleep (),(這里的t是一個不同于當前線程的線程)。即便是執行t.sleep (),也是當前線程進入睡眠,而不是t線程。t.suspend ()是過時的方法,使用 suspend ()導致線程進入停滯狀態,該線程會一直持有對象的監視器,suspend ()容易引起死鎖問題。

  object.wait ()使當前線程出于“不可運行”狀態,和 sleep ()不同的是 wait 是 object 的方法而不是 thread。調用 object.wait ()時,線程先要獲取這個對象的對象鎖,當前線程必須在鎖對象保持同步,把當前線程添加到等待隊列中,隨后另一線程可以同步同一個對象鎖來調用 object.notify (),這樣將喚醒原來等待中的線程,然后釋放該鎖。基本上 wait ()/notify ()與 sleep ()/interrupt ()類似,只是前者需要獲取對象鎖。

  2.在靜態方法上使用同步時會發生什么事?

  同步靜態方法時會獲取該類的“Class”對象,所以當一個線程進入同步的靜態方法中時,線程監視器獲取類本身的對象鎖,其它線程不能進入這個類的任何靜態同步方法。它不像實例方法,因為多個線程可以同時訪問不同實例同步實例方法。

  3.當一個同步方法已經執行,線程能夠調用對象上的非同步實例方法嗎?

  可以,一個非同步方法總是可以被調用而不會有任何問題。實際上,Java 沒有為非同步方法做任何檢查,鎖對象僅僅在同步方法或者同步代碼塊中檢查。如果一個方法沒有聲明為同步,即使你在使用共享數據 Java 照樣會調用,而不會做檢查是否安全,所以在這種情況下要特別小心。一個方法是否聲明為同步取決于臨界區訪問(critial section access),如果方法不訪問臨界區(共享資源或者數據結構)就沒必要聲明為同步的。

3153817 主站蜘蛛池模板: 视频免费完整版在线播放| 国产综合视频一区二区三区| 国产一区二区av天堂热| 午夜国产精品福利一二| 久久久国产精品樱花网站| 国产高清在线精品一区| 天天影视色香欲综合久久| 国产自拍偷拍视频在线观看| 人人妻人人狠人人爽天天综合网| 忘忧草www日本韩国| 欧美成人黄在线观看| 成在线人免费视频| 国产精品日韩中文字幕| 人妻丝袜中文无码AV影音先锋专区| yw尤物av无码国产在线观看| 成人网站免费在线观看| 亚洲综合精品第一页| 无码精品国产VA在线观看DVD| japanese边做边乳喷| 国产精品成人综合色在线| 狠狠色噜噜狠狠狠狠777米奇| 欧美丰满妇大ass| 亚洲AV无码成人网站久久精品| 日韩人妖精品一区二区av| 亚洲国产精品一二三区| 国产亚洲精品久久久久久大师 | 亚洲精品久久久久久婷婷| 少妇被粗大的猛烈进出69影院一 | 国产熟睡乱子伦午夜视频| 久久久国产精品VA麻豆| 人妻一区二区三区人妻黄色| 福利在线视频一区二区| 一区二区三区午夜福利院| 国产精品黄色一区二区三区| 日本熟妇色xxxxx日本免费看| 久久男人av资源站| 国产AV巨作丝袜秘书| 人妻丝袜中文无码av影音先锋 | 精品熟女日韩中文十区| 国产一区二区不卡视频在线 | 久久精品夜色噜噜亚洲aa|