国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁(yè) Java Java面試題 java經(jīng)典面試題集錦(五)

java經(jīng)典面試題集錦(五)

Jul 11, 2020 pm 04:45 PM
java 面試題

java經(jīng)典面試題集錦(五)

一、什麼是執(zhí)行緒同步、非同步?

(更多面試題推薦:java面試題

#同步(synchronous)就是協(xié)同步調(diào),依照預(yù)定的先後序進(jìn)行運(yùn)作。

非同步就是和同步相對(duì),不阻塞,同時(shí)運(yùn)作。

二、什麼是執(zhí)行緒不安全?如何解決? (重點(diǎn))

什麼叫線程安全?

如果你的程式碼所在的進(jìn)程中有多個(gè)執(zhí)行緒在同時(shí)執(zhí)行,而這些執(zhí)行緒可能會(huì)同時(shí)運(yùn)行這段程式碼。如果每次運(yùn)行結(jié)果和單執(zhí)行緒運(yùn)行的結(jié)果是一樣的,而且其他的變數(shù)的值也和預(yù)期的是一樣的,就是執(zhí)行緒安全的。

或說(shuō):一個(gè)類(lèi)別或程式所提供的介面對(duì)於執(zhí)行緒來(lái)說(shuō)是原子運(yùn)算或多個(gè)執(zhí)行緒之間的切換不會(huì)導(dǎo)致該介面的執(zhí)行結(jié)果存在二義性,也就是說(shuō)我們不用考慮同步的問(wèn)題。

線程安全性問(wèn)題都是由全域變數(shù)及靜態(tài)變數(shù)所引起的。

若每個(gè)執(zhí)行緒中對(duì)全域變數(shù)、靜態(tài)變數(shù)只有讀取操作,而無(wú)寫(xiě)入操作,一般來(lái)說(shuō),這個(gè)全域變數(shù)是執(zhí)行緒安全的;若有多個(gè)執(zhí)行緒同時(shí)執(zhí)行寫(xiě)入操作,一般都需要考慮線程同步,否則就可能影響線程安全。

(相關(guān)教學(xué)推薦:java入門(mén)程式

為什麼ArrayList執(zhí)行緒不安全?不安全為什麼要使用?如何解決線程不安全?

一個(gè)ArrayList ,在新增一個(gè)元素的時(shí)候,它可能會(huì)有兩步驟來(lái)完成:

1、在Items[Size] 的位置存放此元素;

2、增大Size 的值。

在單執(zhí)行緒運(yùn)行的情況下,如果Size = 0,新增一個(gè)元素後,此元素在位置0,而且Size=1;而如果是在多執(zhí)行緒情況下,例如有兩個(gè)執(zhí)行緒,線程A 先將元素存放在位置0。

但此時(shí) CPU 調(diào)度執(zhí)行緒A暫停,執(zhí)行緒 B 得到運(yùn)行的機(jī)會(huì)。線程B也向此ArrayList 添加元素,因?yàn)榇藭r(shí)Size 仍然等於0 (注意哦,我們假設(shè)的是添加一個(gè)元素是要兩個(gè)步驟哦,而線程A僅僅完成了步驟1),所以線程B也將元素存放在位置0。然後線程A和線程B都繼續(xù)運(yùn)行,都增加 Size 的值。

那好,現(xiàn)在我們來(lái)看看 ArrayList 的情況,元素其實(shí)只有一個(gè),存放在位置 0,而 Size 卻等於 2。這就是「線程不安全」了。

如何解決?

加鎖(物件鎖、鎖定程式碼區(qū)塊)、自旋CAS方式(樂(lè)觀鎖)、使用java提供的線程安全的資料類(lèi)別

三、如何建立一個(gè)線程?有幾種方法?

1、繼承Thread類(lèi)別

2、實(shí)作Runnable介面

3、實(shí)作Callable介面

四、是使用Runnalbe接口好?還是繼承Thread類(lèi)別好?

實(shí)作Runnable介面比較好一些。

1、因?yàn)閷?shí)作Runnable介面可以避免Java單繼承的限制。

當(dāng)一個(gè)類(lèi)別繼承了Thread,就不可以在繼承其他類(lèi)別了。而當(dāng)一個(gè)類(lèi)別實(shí)作了Runnable,它一樣可以繼承其他類(lèi)別。

2、更符合物件導(dǎo)向的設(shè)計(jì)

run()方法的作用是用來(lái)封裝執(zhí)行緒要執(zhí)行的程式碼。那麼run()方法所屬的對(duì)象,就是執(zhí)行緒任務(wù)對(duì)象。 Thread類(lèi)別的子類(lèi)別物件即使執(zhí)行緒對(duì)象,又是執(zhí)行緒任務(wù)對(duì)象。耦合性很強(qiáng)。

有了Runnable接口,可以將執(zhí)行緒任務(wù)和執(zhí)行緒進(jìn)行解耦,提高了程式的擴(kuò)充性。

(相關(guān)影片教學(xué)推薦:java影片教學(xué)

#五、sleep()和wait()有什麼區(qū)別?

sleep是線程類(lèi)別(Thread)的方法,導(dǎo)致此線程暫停執(zhí)行指定時(shí)間,把執(zhí)行機(jī)會(huì)給其他線程,但是監(jiān)控狀態(tài)仍然保持,到時(shí)後會(huì)自動(dòng)恢復(fù)。呼叫sleep不會(huì)釋放物件鎖定。

wait是Object類(lèi)別的方法,對(duì)此物件呼叫wait方法導(dǎo)致本執(zhí)行緒放棄物件鎖,進(jìn)入等待此物件的等待鎖定池,只有針對(duì)此物件發(fā)出notify方法(或notifyAll)後本執(zhí)行緒才進(jìn)入物件鎖定池準(zhǔn)備取得物件鎖定進(jìn)入運(yùn)作狀態(tài)。

如果變數(shù)被宣告為volatile,在每次訪問(wèn)時(shí)都會(huì)和主存一致;如果變數(shù)在同步方法或同步區(qū)塊中被訪問(wèn),當(dāng)在方法或區(qū)塊的入口處獲得鎖以及方法或區(qū)塊退出時(shí)釋放鎖定時(shí)變數(shù)被同步。

以上是java經(jīng)典面試題集錦(五)的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

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

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

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

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門(mén)話題

Laravel 教程
1601
29
PHP教程
1502
276
如何使用JDBC處理Java的交易? 如何使用JDBC處理Java的交易? Aug 02, 2025 pm 12:29 PM

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

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

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

比較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)絡(luò)端口和防火牆 了解網(wǎng)絡(luò)端口和防火牆 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

垃圾收集如何在Java工作? 垃圾收集如何在Java工作? Aug 02, 2025 pm 01:55 PM

Java的垃圾回收(GC)是自動(dòng)管理內(nèi)存的機(jī)制,通過(guò)回收不可達(dá)對(duì)象釋放堆內(nèi)存,減少內(nèi)存洩漏風(fēng)險(xiǎn)。 1.GC從根對(duì)象(如棧變量、活動(dòng)線程、靜態(tài)字段等)出發(fā)判斷對(duì)象可達(dá)性,無(wú)法到達(dá)的對(duì)像被標(biāo)記為垃圾。 2.基於標(biāo)記-清除算法,標(biāo)記所有可達(dá)對(duì)象,清除未標(biāo)記對(duì)象。 3.採(cǎi)用分代收集策略:新生代(Eden、S0、S1)頻繁執(zhí)行MinorGC;老年代執(zhí)行較少但耗時(shí)較長(zhǎng)的MajorGC;Metaspace存儲(chǔ)類(lèi)元數(shù)據(jù)。 4.JVM提供多種GC器:SerialGC適用於小型應(yīng)用;ParallelGC提升吞吐量;CMS降

使用HTML'輸入類(lèi)型”作為用戶(hù)數(shù)據(jù) 使用HTML'輸入類(lèi)型”作為用戶(hù)數(shù)據(jù) Aug 03, 2025 am 11:07 AM

選擇合適的HTMLinput類(lèi)型能提升數(shù)據(jù)準(zhǔn)確性、增強(qiáng)用戶(hù)體驗(yàn)並提高可用性。 1.根據(jù)數(shù)據(jù)類(lèi)型選用對(duì)應(yīng)input類(lèi)型,如text、email、tel、number和date,可實(shí)現(xiàn)自動(dòng)校驗(yàn)和適配鍵盤(pán);2.利用HTML5新增類(lèi)型如url、color、range和search,可提供更直觀的交互方式;3.配合使用placeholder和required屬性,可提升表單填寫(xiě)效率和正確率,但需注意placeholder不能替代label。

比較Java構(gòu)建工具:Maven vs. Gradle 比較Java構(gòu)建工具:Maven vs. Gradle Aug 03, 2025 pm 01:36 PM

Gradleisthebetterchoiceformostnewprojectsduetoitssuperiorflexibility,performance,andmoderntoolingsupport.1.Gradle’sGroovy/KotlinDSLismoreconciseandexpressivethanMaven’sverboseXML.2.GradleoutperformsMaveninbuildspeedwithincrementalcompilation,buildcac

以身作則,解釋說(shuō)明 以身作則,解釋說(shuō)明 Aug 02, 2025 am 06:26 AM

defer用於在函數(shù)返回前執(zhí)行指定操作,如清理資源;參數(shù)在defer時(shí)立即求值,函數(shù)按後進(jìn)先出(LIFO)順序執(zhí)行;1.多個(gè)defer按聲明逆序執(zhí)行;2.常用於文件關(guān)閉等安全清理;3.可修改命名返回值;4.即使發(fā)生panic也會(huì)執(zhí)行,適合用於recover;5.避免在循環(huán)中濫用defer,防止資源洩漏;正確使用可提升代碼安全性和可讀性。

See all articles