語言基礎(chǔ)類庫提供哪些功能?多線程并發(fā)如何實(shí)現(xiàn)?TaskPool(任務(wù)池)和Worker在實(shí)現(xiàn)和使用場(chǎng)景上有何不同?
針對(duì)開發(fā)者關(guān)注的并發(fā)等語言基礎(chǔ)類庫的相關(guān)能力,我們?cè)谛峦瞥龅恼Z言基礎(chǔ)類庫開發(fā)指南中提供了詳細(xì)的介紹和開發(fā)指導(dǎo),幫助開發(fā)者全面了解并發(fā)實(shí)現(xiàn)、容器類庫基礎(chǔ)操作、XML的生成解析與轉(zhuǎn)換等。
本期HarmonyOS開發(fā)者資料直通車帶您快速了解內(nèi)容干貨~
一
語言基礎(chǔ)類庫文檔上新介紹
語言基礎(chǔ)類庫開發(fā)指南為HarmonyOS應(yīng)用開發(fā)者提供了常用的基礎(chǔ)能力:
-
提供異步并發(fā)和多線程并發(fā)的能力。
-
提供常見的容器類庫增、刪、改、查的能力。
-
提供XML生成、解析與轉(zhuǎn)換、URI/URL構(gòu)造和解析的能力。
-
提供常見的字符串和二進(jìn)制數(shù)據(jù)處理的能力,以及控制臺(tái)打印的相關(guān)能力。
-
提供獲取進(jìn)程信息和操作進(jìn)程的能力。

ArkTS語言基礎(chǔ)類庫能力示意圖
本次上新的語言基礎(chǔ)類庫開發(fā)指南主要針對(duì)并發(fā)能力、容器類庫能力、XML生成解析與轉(zhuǎn)換這三大方面,全面清晰地講解了各自的實(shí)現(xiàn)機(jī)制并提供了對(duì)應(yīng)的具體示例和指導(dǎo),助力開發(fā)者實(shí)現(xiàn)應(yīng)用開發(fā)。
開發(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ì)被暫停,以便在未來某個(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ù)的開發(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異步語法。異步代碼會(huì)被掛起并在之后繼續(xù)執(zhí)行,同一時(shí)間只有一段代碼執(zhí)行。
-
Promise是一種用于處理異步操作的對(duì)象,可以將異步操作轉(zhuǎn)換為類似于同步操作的風(fēng)格,以方便代碼編寫和維護(hù)。Promise提供了一個(gè)狀態(tài)機(jī)制來管理異步操作的不同階段,并提供了一些方法來注冊(cè)回調(diào)函數(shù)以處理異步操作的成功或失敗的結(jié)果。
-
async/await是一種用于處理異步操作的Promise語法糖,使得編寫異步代碼變得更加簡(jiǎn)單和易讀。通過使用async關(guān)鍵字聲明一個(gè)函數(shù)為異步函數(shù),并使用await關(guān)鍵字等待Promise的解析(完成或拒絕),以同步的方式編寫異步操作的代碼。
異步并發(fā)能力適用于單次I/O任務(wù)的場(chǎng)景開發(fā),例如一次網(wǎng)絡(luò)請(qǐng)求、一次文件讀寫等操作。
文檔鏈接
異步并發(fā)概述:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/async-concurrency-overview-0000001632690002-V3
單次I/O任務(wù)開發(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ā)能力供開發(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需要開發(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)參見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ù)開發(fā)指導(dǎo):https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/cpu-intensive-task-development-0000001681369757-V3
I/O密集型任務(wù)開發(fā)指導(dǎo):https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/io-intensive-task-development-0000001681489597-V3
同步任務(wù)開發(fā)指導(dǎo):https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/sync-task-development-0000001632370254-V3
三
容器類庫的基礎(chǔ)操作
容器類庫,用于存儲(chǔ)各種數(shù)據(jù)類型的元素,并具備一系列處理數(shù)據(jù)元素的方法。
容器類采用了類似靜態(tài)語言的方式來實(shí)現(xiàn),并通過對(duì)存儲(chǔ)位置以及屬性的限制,讓每種類型的數(shù)據(jù)都能在完成自身功能的基礎(chǔ)上去除冗余邏輯,保證了數(shù)據(jù)的高效訪問,提升了應(yīng)用的性能。
當(dāng)前提供了線性和非線性兩類容器,共14種。每種容器都有自身的特性及使用場(chǎng)景。
1、線性容器
線性容器實(shí)現(xiàn)能按順序訪問的數(shù)據(jù)結(jié)構(gòu),其底層主要通過數(shù)組實(shí)現(xiàn),包括ArrayList、Vector、List、LinkedList、Deque、Queue、Stack七種。
線性容器,充分考慮了數(shù)據(jù)訪問的速度,運(yùn)行時(shí)(Runtime)通過一條字節(jié)碼指令就可以完成增、刪、改、查等操作。
2、非線性容器
非線性容器實(shí)現(xiàn)能快速查找的數(shù)據(jù)結(jié)構(gòu),其底層通過hash或者紅黑樹實(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)記語言)是一種用于描述數(shù)據(jù)的標(biāo)記語言,旨在提供一種通用的方式來傳輸和存儲(chǔ)數(shù)據(jù),特別是Web應(yīng)用程序中經(jīng)常使用的數(shù)據(jù)。XML并不預(yù)定義標(biāo)記。因此,XML更加靈活,并且可以適用于廣泛的應(yīng)用領(lǐng)域。語言基礎(chǔ)類庫提供了XML相關(guān)的基礎(chǔ)能力,包括:XML的生成、XML的解析和XML的轉(zhuǎn)換。
1、XML生成
XML模塊提供XmlSerializer類來生成XML文件,輸入為固定長(zhǎng)度的Arraybuffer或DataView對(duì)象,該對(duì)象用于存放輸出的XML數(shù)據(jù)。通過調(diào)用不同的方法來寫入不同的內(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)用程序中使用。
語言基礎(chǔ)類庫提供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語言基礎(chǔ)類庫開發(fā)指南上新內(nèi)容,希望能夠幫助開發(fā)者更高效地探索、體驗(yàn)、上手HarmonyOS。同時(shí),我們十分重視開發(fā)者的意見,歡迎各位開發(fā)者在HarmonyOS應(yīng)用開發(fā)官網(wǎng)積極反饋意見。
我們將持續(xù)提升文檔體驗(yàn)、豐富和完善內(nèi)容,感謝各位開發(fā)者的支持及信賴,您的滿意是我們持續(xù)提升文檔體驗(yàn)的目標(biāo)和動(dòng)力。
請(qǐng)關(guān)注HarmonyOS開發(fā)者公眾號(hào)更多HarmonyOS開發(fā)者資料直通車相關(guān)推送,以獲取最新文檔和內(nèi)容資源!
-
HarmonyOS
+關(guān)注
關(guān)注
79文章
2006瀏覽量
31927
原文標(biāo)題:HarmonyOS語言基礎(chǔ)類庫開發(fā)指南上線啦!
文章出處:【微信號(hào):HarmonyOS_Dev,微信公眾號(hào):HarmonyOS開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
AKI跨語言調(diào)用庫神助攻C/C++代碼遷移至HarmonyOS NEXT
HarmonyOS開發(fā)指導(dǎo)類文檔更新速遞(下)

HarmonyOS開發(fā)指導(dǎo)類文檔更新速遞(上)

超值音棒參考設(shè)計(jì)套件開發(fā)指南

MSP430? MCU開發(fā)指南

MSPM0 C系列MCU硬件開發(fā)指南

MSPM0 L系列MCU硬件開發(fā)指南

MSPM0 G系列MCU硬件開發(fā)指南

RA/RX電機(jī)應(yīng)用開發(fā)指南

評(píng)論