亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁 Java Java面試題 2020全新Java面試題-多執(zhí)行緒(二)

2020全新Java面試題-多執(zhí)行緒(二)

May 07, 2020 pm 04:57 PM
java 多執(zhí)行緒 面試題

2020全新Java面試題-多執(zhí)行緒(二)

一、執(zhí)行緒有哪些狀態(tài)?

執(zhí)行緒通常都有五種狀態(tài),創(chuàng)建、就緒、運行、阻塞和死亡。

1、創(chuàng)建狀態(tài)

在產(chǎn)生線程對象,並沒有呼叫該對象的start方法,這是線程處於創(chuàng)建狀態(tài)。

2、就緒狀態(tài)

當呼叫了線程物件的start方法之後,該線程就進入了就緒狀態(tài),但是此時線程調(diào)度程序還沒有把該線程設定為當前線程,此時處於就緒狀態(tài)。在執(zhí)行緒運行之後,從等待或睡眠回來之後,也會處於就緒狀態(tài)。

3、運行狀態(tài)

線程調(diào)度程序?qū)⑻庫毒途w狀態(tài)的線程設定為當前線程,此時線程就進入了運行狀態(tài),開始運行run函數(shù)當中的程式碼。

4、阻塞狀態(tài)

執(zhí)行緒正在運作的時候,被暫停,通常是為了等待某個時間的發(fā)生(比如說某項資源就緒)之後再繼續(xù)運作。 sleep,suspend,wait等方法都可以導致執(zhí)行緒阻塞。

5、死亡狀態(tài)

如果一個執(zhí)行緒的run方法執(zhí)行結(jié)束或呼叫stop方法後,該執(zhí)行緒會死亡。對於已經(jīng)死亡的線程,無法再使用start方法令其進入就緒。

(相關影片教學推薦:java影片

二、sleep() 和 wait() 有什麼不同?

1、sleep():方法是線程類別(Thread)的靜態(tài)方法,讓呼叫線程進入睡眠狀態(tài),讓出執(zhí)行機會給其他線程,等到休眠時間結(jié)束後,線程進入就緒狀態(tài)和其他執(zhí)行緒一起競爭cpu的執(zhí)行時間。因為sleep() 是static靜態(tài)的方法,他不能改變對象的機鎖,當一個synchronized塊中調(diào)用了sleep() 方法,線程雖然進入休眠,但是對象的機鎖沒有被釋放,其他線程依然無法訪問這個對象。

2、wait():wait()是Object類別的方法,當一個執(zhí)行緒執(zhí)行到wait方法時,它就進入一個和該物件相關的等待池,同時釋放物件的機鎖,使得其他執(zhí)行緒能夠訪問,可以透過notify,notifyAll方法來喚醒等待的執(zhí)行緒。

三、notify()和 notifyAll()有什麼差別?

如果執(zhí)行緒呼叫了物件的 wait()方法,那麼執(zhí)行緒就會處於該物件的等待池中,等待池中的執(zhí)行緒不會去競爭該物件的鎖定。

當有執(zhí)行緒呼叫了物件的notifyAll()方法(喚醒所有wait 執(zhí)行緒)或notify()方法(只隨機喚醒一個wait 執(zhí)行緒),被喚醒的執(zhí)行緒就會進入該物件的鎖定池中,鎖定池中的執(zhí)行緒會去競爭該物件鎖定。也就是說,呼叫了notify後只要一個執(zhí)行緒會由等待池進入鎖定池,而notifyAll會將該物件等待池內(nèi)的所有執(zhí)行緒移到鎖定池中,等待鎖定競爭。

優(yōu)先順序高的執(zhí)行緒競爭到物件鎖的機率大,假若某執(zhí)行緒沒有競爭到該物件鎖,它還會留在鎖定池中,只有執(zhí)行緒再次呼叫wait()方法,它才會重新回到等待池中。而競爭到物件鎖的執(zhí)行緒則繼續(xù)往下執(zhí)行,直到執(zhí)行完了 synchronized 程式碼區(qū)塊,它會釋放掉該物件鎖,這時鎖定池中的執(zhí)行緒會繼續(xù)競爭該物件鎖定。

四、線程的 run()和 start()有什麼差別?

每個執(zhí)行緒都是透過某個特定Thread物件所對應的方法run()來完成其操作的,方法run()稱為執(zhí)行緒體。透過呼叫Thread類別的start()方法來啟動一個執(zhí)行緒。

start()方法來啟動一個線程,真正實作了多執(zhí)行緒運行。這時無需等待run方法體程式碼執(zhí)行完畢,可以直接繼續(xù)執(zhí)行下面的程式碼; 這時此執(zhí)行緒是處於就緒狀態(tài), 並沒有執(zhí)行。然後透過此Thread類別呼叫方法run()來完成其運行狀態(tài), 這裡方法run()稱為線程體,它包含了要執(zhí)行的這個線程的內(nèi)容, Run方法運行結(jié)束, 此線程終止。然後CPU再調(diào)度其它線程。

run()方法是在本執(zhí)行緒裡的,只是執(zhí)行緒裡的一個函數(shù),而不是多執(zhí)行緒的。如果直接呼叫run(),其實就相當於是呼叫了一個普通函數(shù)而已,直接待用run()方法必須等待run()方法執(zhí)行完畢才能執(zhí)行下面的程式碼,所以執(zhí)行路徑還是只有一條,根本就沒有線程的特徵,所以在多執(zhí)行緒執(zhí)行時要使用start()方法而不是run()方法。

(推薦教學:java入門程式

五、建立執(zhí)行緒池有哪幾種方式?

1、newFixedThreadPool(int nThreads)

#建立一個固定長度的線程池,每當提交一個任務就會建立一個線程,直到達到線程池的最大數(shù)量,這時線程規(guī)模將不再變化,當線程發(fā)生未預期的錯誤而結(jié)束時,線程池會補充一個新的線程。

2、newCachedThreadPool()

建立一個可快取的線程池,如果線程池的規(guī)模超過了處理需求,將自動回收空閒線程,而當需求增加時,則可以自動添加新線程,線程池的規(guī)模不存在任何限制。

3、newSingleThreadExecutor()

這是一個單一執(zhí)行緒的Executor,它建立單一工作執(zhí)行緒來執(zhí)行任務,如果這個執(zhí)行緒異常結(jié)束,會建立一個新的來取代它;它的特點是能確保依照任務在佇列中的順序來串列執(zhí)行。

4、newScheduledThreadPool(int corePoolSize)

#建立了一個固定長度的執(zhí)行緒池,而且以延遲或定時的方式來執(zhí)行任務,類似於Timer。

更多面試題請追蹤java面試題欄位。

以上是2020全新Java面試題-多執(zhí)行緒(二)的詳細內(nèi)容。更多資訊請關注PHP中文網(wǎng)其他相關文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權的內(nèi)容,請聯(lián)絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
VSCODE設置。 JSON位置 VSCODE設置。 JSON位置 Aug 01, 2025 am 06:12 AM

settings.json文件位於用戶級或工作區(qū)級路徑,用於自定義VSCode設置。 1.用戶級路徑:Windows為C:\Users\\AppData\Roaming\Code\User\settings.json,macOS為/Users//Library/ApplicationSupport/Code/User/settings.json,Linux為/home//.config/Code/User/settings.json;2.工作區(qū)級路徑:項目根目錄下的.vscode/settings

如何使用JDBC處理Java的交易? 如何使用JDBC處理Java的交易? Aug 02, 2025 pm 12:29 PM

要正確處理JDBC事務,必須先關閉自動提交模式,再執(zhí)行多個操作,最後根據(jù)結(jié)果提交或回滾;1.調(diào)用conn.setAutoCommit(false)以開始事務;2.執(zhí)行多個SQL操作,如INSERT和UPDATE;3.若所有操作成功則調(diào)用conn.commit(),若發(fā)生異常則調(diào)用conn.rollback()確保數(shù)據(jù)一致性;同時應使用try-with-resources管理資源,妥善處理異常並關閉連接,避免連接洩漏;此外建議使用連接池、設置保存點實現(xiàn)部分回滾,並保持事務盡可能短以提升性能。

在Java的掌握依賴注入春季和Guice 在Java的掌握依賴注入春季和Guice Aug 01, 2025 am 05:53 AM

依賴性(di)IsadesignpatternwhereObjectsReceivedenciesenciesExtern上,推廣looseSecouplingAndEaseerTestingThroughConstructor,setter,orfieldInjection.2.springfraMefringframeWorkSannotationsLikeLikeLike@component@component,@component,@service,@autowiredwithjava-service和@autowiredwithjava-ligatiredwithjava-lase-lightike

如何使用Java的日曆? 如何使用Java的日曆? Aug 02, 2025 am 02:38 AM

使用java.time包中的類替代舊的Date和Calendar類;2.通過LocalDate、LocalDateTime和LocalTime獲取當前日期時間;3.使用of()方法創(chuàng)建特定日期時間;4.利用plus/minus方法不可變地增減時間;5.使用ZonedDateTime和ZoneId處理時區(qū);6.通過DateTimeFormatter格式化和解析日期字符串;7.必要時通過Instant與舊日期類型兼容;現(xiàn)代Java中日期處理應優(yōu)先使用java.timeAPI,它提供了清晰、不可變且線

了解Java虛擬機(JVM)內(nèi)部 了解Java虛擬機(JVM)內(nèi)部 Aug 01, 2025 am 06:31 AM

TheJVMenablesJava’s"writeonce,runanywhere"capabilitybyexecutingbytecodethroughfourmaincomponents:1.TheClassLoaderSubsystemloads,links,andinitializes.classfilesusingbootstrap,extension,andapplicationclassloaders,ensuringsecureandlazyclassloa

Google Chrome無法打開本地文件 Google Chrome無法打開本地文件 Aug 01, 2025 am 05:24 AM

ChromecanopenlocalfileslikeHTMLandPDFsbyusing"Openfile"ordraggingthemintothebrowser;ensuretheaddressstartswithfile:///;2.SecurityrestrictionsblockAJAX,localStorage,andcross-folderaccessonfile://;usealocalserverlikepython-mhttp.server8000tor

比較Java框架:Spring Boot vs Quarkus vs Micronaut 比較Java框架:Spring Boot vs Quarkus vs Micronaut Aug 04, 2025 pm 12:48 PM

前形式攝取,quarkusandmicronautleaddueTocile timeProcessingandGraalvSupport,withquarkusoftenpernperforminglightbetterine nosserless notelless centarios.2。

了解網(wǎng)絡端口和防火牆 了解網(wǎng)絡端口和防火牆 Aug 01, 2025 am 06:40 AM

NetworkPortSandFireWallsworkTogetHertoEnableCommunication whereSeringSecurity.1.NetWorkPortSareVirtualendPointSnumbered0-655 35,with-Well-with-Newonportslike80(HTTP),443(https),22(SSH)和25(smtp)sindiessingspefificservices.2.portsoperateervertcp(可靠,c

See all articles