2020全新Java面試題-多執行緒(一)
一、並行和並發有什麼差別?
並行是指兩個或多個事件在同一時刻發生;而並發是指兩個或多個事件在同一時間間隔發生。
並行是在不同實體上的多個事件,並發是在同一實體上的多個事件。
並行是在一台處理器上「同時」處理多個任務,並發是在多台處理器上同時處理多個任務。如hadoop分散式集群。
所以並發程式設計的目標是充分的利用處理器的每一個核,以達到最高的處理效能。
(相關影片教學推薦:java影片)
二、執行緒與進程的差別?
簡而言之,進程是程式運作和資源分配的基本單位,一個程式至少有一個行程,一個行程至少有一個執行緒。進程在執行過程中擁有獨立的記憶體單元,而多個執行緒共享記憶體資源,減少切換次數,進而效率更高。執行緒是進程的一個實體,是cpu調度和分派的基本單位,是比程式更小的能獨立運作的基本單位。同一進程中的多個執行緒之間可以並發執行。
三、守護線程是什麼?
守護線程(即daemon thread),是個服務線程,準確地說就是服務其他的線程。
四、創建線程有哪幾種方式?
(1)繼承Thread類別建立執行緒類別
定義Thread類別的子類,並重寫該類別的run方法,該run方法的方法體就代表了執行緒要完成的任務。因此把run()方法稱為執行體。
建立Thread子類別的實例,即建立了執行緒物件。
呼叫執行緒物件的start()方法來啟動該執行緒。
(推薦教學:java入門程式)
(2)透過Runnable介面建立執行緒類別
定義runnable介面的實作類,並重寫該介面的run()方法,該run()方法的方法體同樣是該執行緒的執行緒執行體。
建立 Runnable實作類別的實例,並依此實例作為Thread的target來建立Thread對象,該Thread對象才是真正的執行緒對象。
呼叫執行緒物件的start()方法來啟動該執行緒。
(3)透過Callable和Future建立執行緒
建立Callable介面的實作類,並實作call()方法,該call()方法將作為執行緒執行體,並且有傳回值。
建立Callable實作類別的實例,使用FutureTask類別來包裝Callable對象,該FutureTask物件封裝了該Callable物件的call()方法的傳回值。
使用FutureTask物件作為Thread物件的target建立並啟動新執行緒。
呼叫FutureTask物件的get()方法來取得子執行緒執行結束後的回傳值。
五、說一下 runnable 和 callable 有什麼不同?
有點深的問題了,也看出一個Java程式設計師學習知識的廣度。
Runnable介面中的run()方法的回傳值是void,它所做的事情只是純粹地去執行run()方法中的程式碼而已;
Callable介面中的call( )方法是有回傳值的,是一個泛型,和Future、FutureTask配合可以用來得到非同步執行的結果。
想知道更多java面試題請關注java高階面試題欄位。
以上是2020全新Java面試題-多執行緒(一)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

Java 8引入了Stream API,提供了一種強大且表達力豐富的處理數據集合的方式。然而,使用Stream時,一個常見問題是:如何從forEach操作中中斷或返回? 傳統循環允許提前中斷或返回,但Stream的forEach方法並不直接支持這種方式。本文將解釋原因,並探討在Stream處理系統中實現提前終止的替代方法。 延伸閱讀: Java Stream API改進 理解Stream forEach forEach方法是一個終端操作,它對Stream中的每個元素執行一個操作。它的設計意圖是處

膠囊是一種三維幾何圖形,由一個圓柱體和兩端各一個半球體組成。膠囊的體積可以通過將圓柱體的體積和兩端半球體的體積相加來計算。本教程將討論如何使用不同的方法在Java中計算給定膠囊的體積。 膠囊體積公式 膠囊體積的公式如下: 膠囊體積 = 圓柱體體積 兩個半球體體積 其中, r: 半球體的半徑。 h: 圓柱體的高度(不包括半球體)。 例子 1 輸入 半徑 = 5 單位 高度 = 10 單位 輸出 體積 = 1570.8 立方單位 解釋 使用公式計算體積: 體積 = π × r2 × h (4

Spring Boot簡化了可靠,可擴展和生產就緒的Java應用的創建,從而徹底改變了Java開發。 它的“慣例慣例”方法(春季生態系統固有的慣例),最小化手動設置
