身為JAVA工作者必須了解的實(shí)戰(zhàn)知識(shí)(八)

一去团、為什么GUI是單線程化

傳統(tǒng)的GUI應(yīng)用程序通常都是單線程的瑰枫。

1. 在代碼的各個(gè)位置都需要調(diào)用poll方法來(lái)獲得輸入事件(這種方式將給代碼帶來(lái)極大的混亂)

2. 通過(guò)一個(gè)“主事件循環(huán)(Main Event Loop)”來(lái)間接地執(zhí)行應(yīng)用程序的所有代碼。

如果在主事件循環(huán)中調(diào)用的代碼需要很長(zhǎng)時(shí)間才能執(zhí)行完成偶惠,那么用戶界面就會(huì)“凍結(jié)”春寿,直到代碼執(zhí)行完成。這是因?yàn)橹挥挟?dāng)執(zhí)行控制權(quán)返回到主事件循環(huán)后忽孽,才能處理后續(xù)的用戶界面事件绑改。

很多嘗試多線程的GUI框架的努力,最總都因?yàn)殪o態(tài)條件和死鎖導(dǎo)致的穩(wěn)定性問(wèn)題兄一,又回到單線程的時(shí)間隊(duì)列模型的老路上厘线。

1. 順序事件處理

因?yàn)橹挥形ㄒ坏木€程在處理GUI任務(wù),所有任務(wù)都不需要考慮并發(fā)且都是順序執(zhí)行出革,但是問(wèn)題是如果在任務(wù)中執(zhí)行時(shí)間過(guò)長(zhǎng)造壮,或?qū)е潞罄m(xù)操作無(wú)法響應(yīng)。(Android會(huì)提示Andorid Not Response異常)

2. Swing中的線程限制

GUI的單線程規(guī)則:組件與模型只能在事件分派線程中被創(chuàng)建蹋盆、修改和請(qǐng)求费薄。

在Andorid中如果在子線程進(jìn)行創(chuàng)建或者更新UI操作會(huì)拋出異常硝全。

二栖雾、短期的GUI任務(wù)

GUI應(yīng)用程序中,事件起源于事件線程伟众,冒泡似得傳遞到達(dá)應(yīng)用程序提供的監(jiān)聽(tīng)器析藕,如果是比較簡(jiǎn)單的修改顏色等,可以直接在事件線程中處理凳厢。

三账胧、耗時(shí)GUI任務(wù)

因?yàn)镚UI任務(wù)有線程限制,所以需要子線程處理耗時(shí)操作先紫,通常最后還需要在子線程進(jìn)行刷新治泥。

1. 取消

2. 進(jìn)度與完成標(biāo)識(shí)

3. SwingWorker

在Andorid中使用AsyncTask

四、共享數(shù)據(jù)模型

避免響應(yīng)性的最簡(jiǎn)單的方式是初始化時(shí)一次性讀取到內(nèi)存中遮精,這樣需要考慮是否占用內(nèi)存過(guò)多的問(wèn)題居夹。

1. 線程安全的數(shù)據(jù)模型

ConcurrentHashMap無(wú)法提供一致的數(shù)據(jù)快照败潦。

CopyOnWriteArrayList同時(shí)獲得線程安全性、一致性以及良好的響應(yīng)性准脂。

2. 分解數(shù)據(jù)模型

如果一個(gè)數(shù)據(jù)模型必須被多個(gè)線程共享劫扒,而且由于阻塞、一致性或復(fù)雜度等原因無(wú)法實(shí)現(xiàn)一個(gè)線程安全的模型時(shí)狸膏,可以考慮使用分解模型設(shè)計(jì)沟饥。

五、其他形式的單線程子系統(tǒng)

一些情況下無(wú)法避免同步或者死鎖問(wèn)題湾戳,例如:原生庫(kù)(Native Library)要求贤旷、通過(guò)System.loadLibrary加載時(shí),都必須放在同一個(gè)線程中執(zhí)行院塞。

將Future和newSingleThreadExecutor一起使用處理單線程可取消的任務(wù)遮晚。

以上就是我推薦給Java開(kāi)發(fā)者們的一面試經(jīng)典知識(shí)。但是這些知識(shí)里面并沒(méi)有太多Java全棧拦止、Java晉階县遣、JAVA架構(gòu)之類(lèi)的題,不是我不推薦汹族,而是希望大家更多的從基本功做起萧求,打好基礎(chǔ),太多復(fù)雜的內(nèi)容一會(huì)兒也說(shuō)不明白顶瞒。

好了同學(xué)們夸政,我能介紹的也都全部介紹完給你們了,如果下獲得更多JAVA教學(xué)資源榴徐,可以選擇來(lái)我們這里共同交流守问,群:240448376,很多大神在這里切磋學(xué)習(xí)坑资,不懂可以直接問(wèn)耗帕,晚上還有大牛免費(fèi)直播教學(xué)。

注:加群要求

1袱贮、具有一定工作經(jīng)驗(yàn)的仿便,面對(duì)目前流行的技術(shù)不知從何下手,需要突破技術(shù)瓶頸的可以加攒巍,有些應(yīng)屆生和實(shí)習(xí)生也可以加嗽仪。

2、在公司待久了柒莉,過(guò)得很安逸闻坚,但跳槽時(shí)面試碰壁。需要在短時(shí)間內(nèi)進(jìn)修兢孝、跳槽拿高薪的可以加窿凤。

3搀擂、如果沒(méi)有工作經(jīng)驗(yàn),但基礎(chǔ)非常扎實(shí)卷玉,對(duì)java工作機(jī)制哨颂,常用設(shè)計(jì)思想,常用java開(kāi)發(fā)框架掌握熟練的相种,可以加威恼。

4、覺(jué)得自己很牛B寝并,一般需求都能搞定箫措。但是所學(xué)的知識(shí)點(diǎn)沒(méi)有系統(tǒng)化,很難在技術(shù)領(lǐng)域繼續(xù)突破的可以加衬潦。

5.阿里Java高級(jí)大牛直播講解知識(shí)點(diǎn)斤蔓,分享知識(shí),多年工作經(jīng)驗(yàn)的梳理和總結(jié)镀岛,帶著大家全面弦牡、科學(xué)地建立自己的技術(shù)體系和技術(shù)認(rèn)知!

PS:現(xiàn)在主要講解的內(nèi)容是(反射原理漂羊、枚舉原理與應(yīng)用驾锰、注解原理常用設(shè)計(jì)模式走越、正規(guī)表達(dá)式高級(jí)應(yīng)用椭豫、JAVA操作Office原理詳解JAVA圖像處理技術(shù)旨指,等多個(gè)知識(shí)點(diǎn)的詳解和實(shí)戰(zhàn))

6.小號(hào)或者小白之類(lèi)加群一律不給過(guò)赏酥,謝謝。

最后谆构,每一位讀到這里的網(wǎng)友裸扶,感謝你們能耐心地看完。覺(jué)得對(duì)你有幫助可以給個(gè)喜歡低淡!希望在成為一名更優(yōu)秀的Java程序員的道路上姓言,我們可以一起學(xué)習(xí)瞬项、一起進(jìn)步

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蔗蹋,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子囱淋,更是在濱河造成了極大的恐慌猪杭,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妥衣,死亡現(xiàn)場(chǎng)離奇詭異皂吮,居然都是意外死亡戒傻,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)蜂筹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)需纳,“玉大人,你說(shuō)我怎么就攤上這事艺挪〔霍妫” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵麻裳,是天一觀的道長(zhǎng)口蝠。 經(jīng)常有香客問(wèn)我,道長(zhǎng)津坑,這世上最難降的妖魔是什么妙蔗? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮疆瑰,結(jié)果婚禮上眉反,老公的妹妹穿的比我還像新娘。我一直安慰自己穆役,他們只是感情好禁漓,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著孵睬,像睡著了一般播歼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上掰读,一...
    開(kāi)封第一講書(shū)人閱讀 51,679評(píng)論 1 305
  • 那天秘狞,我揣著相機(jī)與錄音,去河邊找鬼蹈集。 笑死烁试,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的拢肆。 我是一名探鬼主播减响,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼郭怪!你這毒婦竟也來(lái)了支示?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鄙才,失蹤者是張志新(化名)和其女友劉穎颂鸿,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體攒庵,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嘴纺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年败晴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片栽渴。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡尖坤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出闲擦,到底是詐尸還是另有隱情糖驴,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布佛致,位于F島的核電站贮缕,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏俺榆。R本人自食惡果不足惜感昼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望罐脊。 院中可真熱鬧定嗓,春花似錦、人聲如沸萍桌。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)上炎。三九已至恃逻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間藕施,已是汗流浹背寇损。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留裳食,地道東北人矛市。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像诲祸,于是被迫代替她去往敵國(guó)和親浊吏。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容