語(yǔ)言基礎(chǔ)類庫(kù)提供哪些功能?多線程并發(fā)如何實(shí)現(xiàn)?TaskPool(任務(wù)池)和Worker在實(shí)現(xiàn)和使用場(chǎng)景上有何不同?
針對(duì)開(kāi)發(fā)者關(guān)注的并發(fā)等語(yǔ)言基礎(chǔ)類庫(kù)的相關(guān)能力,我們?cè)谛峦瞥龅恼Z(yǔ)言基礎(chǔ)類庫(kù)開(kāi)發(fā)指南中提供了詳細(xì)的介紹和開(kāi)發(fā)指導(dǎo),幫助開(kāi)發(fā)者全面了解并發(fā)實(shí)現(xiàn)、容器類庫(kù)基礎(chǔ)操作、XML的生成解析與轉(zhuǎn)換等。
本期HarmonyOS開(kāi)發(fā)者資料直通車(chē)帶您快速了解內(nèi)容干貨~
一
語(yǔ)言基礎(chǔ)類庫(kù)文檔上新介紹
語(yǔ)言基礎(chǔ)類庫(kù)開(kāi)發(fā)指南為HarmonyOS應(yīng)用開(kāi)發(fā)者提供了常用的基礎(chǔ)能力:
-
提供異步并發(fā)和多線程并發(fā)的能力。
-
提供常見(jiàn)的容器類庫(kù)增、刪、改、查的能力。
-
提供XML生成、解析與轉(zhuǎn)換、URI/URL構(gòu)造和解析的能力。
-
提供常見(jiàn)的字符串和二進(jìn)制數(shù)據(jù)處理的能力,以及控制臺(tái)打印的相關(guān)能力。
-
提供獲取進(jìn)程信息和操作進(jìn)程的能力。
ArkTS語(yǔ)言基礎(chǔ)類庫(kù)能力示意圖
本次上新的語(yǔ)言基礎(chǔ)類庫(kù)開(kāi)發(fā)指南主要針對(duì)并發(fā)能力、容器類庫(kù)能力、XML生成解析與轉(zhuǎn)換這三大方面,全面清晰地講解了各自的實(shí)現(xiàn)機(jī)制并提供了對(duì)應(yīng)的具體示例和指導(dǎo),助力開(kāi)發(fā)者實(shí)現(xiàn)應(yīng)用開(kāi)發(fā)。
開(kāi)發(fā)者可在HarmonyOS文檔官網(wǎng),直接搜索想了解的場(chǎng)景和能力,快速直達(dá)文檔進(jìn)行瀏覽。
二
如何實(shí)現(xiàn)異步并發(fā)和多線程并發(fā)
并發(fā)是指在同一時(shí)間段內(nèi),能夠處理多個(gè)任務(wù)的能力。為了提升應(yīng)用的響應(yīng)速度與幀率,以及防止耗時(shí)任務(wù)對(duì)主線程的干擾,HarmonyOS系統(tǒng)提供了異步并發(fā)和多線程并發(fā)兩種處理策略。
-
異步并發(fā):是指異步代碼在執(zhí)行到一定程度后會(huì)被暫停,以便在未來(lái)某個(gè)時(shí)間點(diǎn)繼續(xù)執(zhí)行,這種情況下,同一時(shí)間只有一段代碼在執(zhí)行。
-
多線程并發(fā):允許在同一時(shí)間段內(nèi)同時(shí)執(zhí)行多段代碼。在主線程繼續(xù)響應(yīng)用戶操作和更新UI的同時(shí),后臺(tái)也能執(zhí)行耗時(shí)操作,從而避免應(yīng)用出現(xiàn)卡頓。
ArkTS支持異步并發(fā)和多線程并發(fā)。
-
Promise和async/await提供異步并發(fā)能力,適用于單次I/O任務(wù)的開(kāi)發(fā)場(chǎng)景。
-
TaskPool和Worker提供多線程并發(fā)能力,適用于CPU密集型任務(wù)、I/O密集型任務(wù)和同步任務(wù)等并發(fā)場(chǎng)景。
1、異步并發(fā)的實(shí)現(xiàn)
Promise和async/await提供異步并發(fā)能力,是標(biāo)準(zhǔn)的JS異步語(yǔ)法。異步代碼會(huì)被掛起并在之后繼續(xù)執(zhí)行,同一時(shí)間只有一段代碼執(zhí)行。
-
Promise是一種用于處理異步操作的對(duì)象,可以將異步操作轉(zhuǎn)換為類似于同步操作的風(fēng)格,以方便代碼編寫(xiě)和維護(hù)。Promise提供了一個(gè)狀態(tài)機(jī)制來(lái)管理異步操作的不同階段,并提供了一些方法來(lái)注冊(cè)回調(diào)函數(shù)以處理異步操作的成功或失敗的結(jié)果。
-
async/await是一種用于處理異步操作的Promise語(yǔ)法糖,使得編寫(xiě)異步代碼變得更加簡(jiǎn)單和易讀。通過(guò)使用async關(guān)鍵字聲明一個(gè)函數(shù)為異步函數(shù),并使用await關(guān)鍵字等待Promise的解析(完成或拒絕),以同步的方式編寫(xiě)異步操作的代碼。
異步并發(fā)能力適用于單次I/O任務(wù)的場(chǎng)景開(kāi)發(fā),例如一次網(wǎng)絡(luò)請(qǐng)求、一次文件讀寫(xiě)等操作。
文檔鏈接
異步并發(fā)概述:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/async-concurrency-overview-0000001632690002-V3
單次I/O任務(wù)開(kāi)發(fā)指導(dǎo):https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/single-io-development-0000001681129701-V3
2、多線程并發(fā)的實(shí)現(xiàn)
ArkTS提供了TaskPool和Worker兩種并發(fā)能力供開(kāi)發(fā)者選擇。TaskPool和Worker的作用是為應(yīng)用程序提供一個(gè)多線程的運(yùn)行環(huán)境,用于處理耗時(shí)的計(jì)算任務(wù)或其他密集型任務(wù)。可以有效地避免這些任務(wù)阻塞主線程,從而最大化系統(tǒng)的利用率,降低整體資源消耗,并提高系統(tǒng)的整體性能。
由于TaskPool的工作線程會(huì)綁定系統(tǒng)的調(diào)度優(yōu)先級(jí),并且支持負(fù)載均衡(自動(dòng)擴(kuò)縮容),而Worker需要開(kāi)發(fā)者自行創(chuàng)建,存在創(chuàng)建耗時(shí)以及不支持設(shè)置調(diào)度優(yōu)先級(jí),故在性能方面使用TaskPool會(huì)優(yōu)于Worker,因此大多數(shù)場(chǎng)景推薦使用TaskPool。
TaskPool偏向獨(dú)立任務(wù)(線程級(jí))維度,超長(zhǎng)任務(wù)(大于3分鐘)會(huì)被系統(tǒng)自動(dòng)回收;而Worker偏向線程的維度,支持長(zhǎng)時(shí)間占據(jù)線程執(zhí)行。
TaskPool和Worker各自的實(shí)現(xiàn)特點(diǎn)和適用場(chǎng)景存在差異,詳細(xì)請(qǐng)參見(jiàn)TaskPool和Worker的對(duì)比。
多線程并發(fā)能力,適用于CPU密集型任務(wù)、I/O密集型任務(wù)和同步任務(wù)等并發(fā)場(chǎng)景。
文檔鏈接
TaskPool和Worker的對(duì)比:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/taskpool-vs-worker-0000001632849934-V3
CPU密集型任務(wù)開(kāi)發(fā)指導(dǎo):https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/cpu-intensive-task-development-0000001681369757-V3
I/O密集型任務(wù)開(kāi)發(fā)指導(dǎo):https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/io-intensive-task-development-0000001681489597-V3
同步任務(wù)開(kāi)發(fā)指導(dǎo):https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/sync-task-development-0000001632370254-V3
三
容器類庫(kù)的基礎(chǔ)操作
容器類庫(kù),用于存儲(chǔ)各種數(shù)據(jù)類型的元素,并具備一系列處理數(shù)據(jù)元素的方法。
容器類采用了類似靜態(tài)語(yǔ)言的方式來(lái)實(shí)現(xiàn),并通過(guò)對(duì)存儲(chǔ)位置以及屬性的限制,讓每種類型的數(shù)據(jù)都能在完成自身功能的基礎(chǔ)上去除冗余邏輯,保證了數(shù)據(jù)的高效訪問(wèn),提升了應(yīng)用的性能。
當(dāng)前提供了線性和非線性兩類容器,共14種。每種容器都有自身的特性及使用場(chǎng)景。
1、線性容器
線性容器實(shí)現(xiàn)能按順序訪問(wèn)的數(shù)據(jù)結(jié)構(gòu),其底層主要通過(guò)數(shù)組實(shí)現(xiàn),包括ArrayList、Vector、List、LinkedList、Deque、Queue、Stack七種。
線性容器,充分考慮了數(shù)據(jù)訪問(wèn)的速度,運(yùn)行時(shí)(Runtime)通過(guò)一條字節(jié)碼指令就可以完成增、刪、改、查等操作。
2、非線性容器
非線性容器實(shí)現(xiàn)能快速查找的數(shù)據(jù)結(jié)構(gòu),其底層通過(guò)hash或者紅黑樹(shù)實(shí)現(xiàn),包括HashMap、HashSet、TreeMap、TreeSet、LightWeightMap、LightWeightSet、PlainArray七種。非線性容器中的key及value的類型均滿足ECMA標(biāo)準(zhǔn)。
文檔鏈接
線性容器:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/linear-container-0000001681209893-V3
非線性容器:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/nonlinear-container-0000001632530094-V3
四
XML生成、解析與轉(zhuǎn)換
XML(可擴(kuò)展標(biāo)記語(yǔ)言)是一種用于描述數(shù)據(jù)的標(biāo)記語(yǔ)言,旨在提供一種通用的方式來(lái)傳輸和存儲(chǔ)數(shù)據(jù),特別是Web應(yīng)用程序中經(jīng)常使用的數(shù)據(jù)。XML并不預(yù)定義標(biāo)記。因此,XML更加靈活,并且可以適用于廣泛的應(yīng)用領(lǐng)域。語(yǔ)言基礎(chǔ)類庫(kù)提供了XML相關(guān)的基礎(chǔ)能力,包括:XML的生成、XML的解析和XML的轉(zhuǎn)換。
1、XML生成
XML模塊提供XmlSerializer類來(lái)生成XML文件,輸入為固定長(zhǎng)度的Arraybuffer或DataView對(duì)象,該對(duì)象用于存放輸出的XML數(shù)據(jù)。通過(guò)調(diào)用不同的方法來(lái)寫(xiě)入不同的內(nèi)容,可以生成一份完整的XML文件。
2、XML解析
對(duì)于以XML作為載體傳遞的數(shù)據(jù),實(shí)際使用中需要對(duì)相關(guān)的節(jié)點(diǎn)進(jìn)行解析,一般包括解析XML標(biāo)簽和標(biāo)簽值、解析XML屬性和屬性值、解析XML事件類型和元素深度三類場(chǎng)景。
XML模塊提供XmlPullParser類對(duì)XML文件解析,輸入為含有XML文本的ArrayBufffer或DataView,輸出為解析得到的信息。
3、XML轉(zhuǎn)換
將XML文本轉(zhuǎn)換為JavaScript對(duì)象可以更輕松地處理和操作數(shù)據(jù),并且更適合在JavaScript應(yīng)用程序中使用。
語(yǔ)言基礎(chǔ)類庫(kù)提供ConvertXML類將XML文本轉(zhuǎn)換為JavaScript對(duì)象,輸入為待轉(zhuǎn)換的XML字符串及轉(zhuǎn)換選項(xiàng),輸出為轉(zhuǎn)換后的JavaScript對(duì)象。
文檔鏈接
XML生成:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/xml-generation-0000001681489601-V3
XML解析:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/xml-parsing-0000001632370258-V3
XML轉(zhuǎn)換:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/xml-conversion-0000001632690010-V3
五
我們期待您的反饋
以上就是本期為大家準(zhǔn)備的HarmonyOS語(yǔ)言基礎(chǔ)類庫(kù)開(kāi)發(fā)指南上新內(nèi)容,希望能夠幫助開(kāi)發(fā)者更高效地探索、體驗(yàn)、上手HarmonyOS。同時(shí),我們十分重視開(kāi)發(fā)者的意見(jiàn),歡迎各位開(kāi)發(fā)者在HarmonyOS應(yīng)用開(kāi)發(fā)官網(wǎng)積極反饋意見(jiàn)。
我們將持續(xù)提升文檔體驗(yàn)、豐富和完善內(nèi)容,感謝各位開(kāi)發(fā)者的支持及信賴,您的滿意是我們持續(xù)提升文檔體驗(yàn)的目標(biāo)和動(dòng)力。
請(qǐng)關(guān)注HarmonyOS開(kāi)發(fā)者公眾號(hào)更多HarmonyOS開(kāi)發(fā)者資料直通車(chē)相關(guān)推送,以獲取最新文檔和內(nèi)容資源!
-
HarmonyOS
+關(guān)注
關(guān)注
79文章
1973瀏覽量
30143
原文標(biāo)題:HarmonyOS語(yǔ)言基礎(chǔ)類庫(kù)開(kāi)發(fā)指南上線啦!
文章出處:【微信號(hào):HarmonyOS_Dev,微信公眾號(hào):HarmonyOS開(kāi)發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論