Java線程創(chuàng)建靜態(tài)代理模式代碼實(shí)例
一、背景
在通過(guò)Runnable接口創(chuàng)建線程時(shí),啟動(dòng)線程需要借助Thread類(lèi),這里就涉及到了靜態(tài)代理模式。
二、實(shí)例
以歌手演出為例,在演出的這個(gè)過(guò)程中,歌手與他的助理他們有一個(gè)共同的目標(biāo)"完成這場(chǎng)演出"。
為啥需要歌手需要有助理呢?
因?yàn)榕e辦好一場(chǎng)演出有很多繁瑣的事情要做,為了讓歌手專(zhuān)心完成"唱歌"這件事,助理就需要在背后幫助歌手做很多事情。
1.助理負(fù)責(zé)幫助歌手做一些輔助工作,例如幫忙宣傳、幫忙計(jì)劃行程、幫忙訂機(jī)票等等。
2.歌手負(fù)責(zé)唱歌這件事情。
三、實(shí)例的代碼體現(xiàn)
1.公共的接口show
歌手與助理為了完成演出,都需要為這場(chǎng)演出做一些事情。
2.歌手類(lèi)Singer實(shí)現(xiàn)Show接口
歌手要做的事情主要就是唱歌
3.助理類(lèi)AssistantManager實(shí)現(xiàn)Show接口
助理要幫助歌手做一些輔助的工作
這樣寫(xiě)助理和歌手好像并沒(méi)有聯(lián)系起來(lái),我們只知道助理和歌手都為了同一場(chǎng)演出做了一些事情。
那這個(gè)助理究竟是服務(wù)哪一位歌手呢?
A.我們?yōu)橹眍?lèi)設(shè)置了一個(gè)成員變量"歌手"
B.為助理類(lèi)創(chuàng)建了相應(yīng)的構(gòu)造方法
(經(jīng)過(guò)以上兩步,助理類(lèi)在創(chuàng)建時(shí)就自帶了一個(gè)相應(yīng)的"歌手")
C.在演出所做的事情中,讓助理對(duì)應(yīng)的歌手完成"唱歌"這件事。
在創(chuàng)建助理類(lèi)對(duì)象時(shí)設(shè)置相應(yīng)的對(duì)象,借助助理類(lèi)對(duì)象,就可以完成"演出"這整個(gè)過(guò)程。
運(yùn)行代碼:
四、總結(jié)
1.Java中的Thread類(lèi)實(shí)現(xiàn)了Runable接口
即Thread類(lèi)相當(dāng)于上文中的"助理"
2.我們寫(xiě)的類(lèi)也是實(shí)現(xiàn)了Runnable接口
即我們寫(xiě)的類(lèi)相當(dāng)于上文中的"歌手"
3.在實(shí)現(xiàn)了Runnable接口后通過(guò)代理類(lèi)Thread對(duì)象完成線程的啟動(dòng)
A.在代理類(lèi)Thread對(duì)象的創(chuàng)建中,聲明了我們所寫(xiě)的實(shí)際對(duì)象,eg:"myRunnable"。
B.然后由Thread類(lèi)協(xié)助我們完成這一系列的操作。
C.看似簡(jiǎn)單的start()背后,代理類(lèi)Thread還幫助我們做了很多事。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java通過(guò)PowerMockito和Mokito進(jìn)行單元測(cè)試的實(shí)現(xiàn)
PowerMockito和Mockito都是Java語(yǔ)言中的測(cè)試框架,用于進(jìn)行單元測(cè)試和集成測(cè)試,本文就來(lái)詳細(xì)的介紹一下通過(guò)PowerMockito和Mokito進(jìn)行單元測(cè)試,感興趣的可以了解一下2023-08-08Kotlin與java8的SAM轉(zhuǎn)換對(duì)比(進(jìn)階)
這篇文章主要介紹了Kotlin與java8的SAM轉(zhuǎn)換對(duì)比,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05Java線程并發(fā)中常見(jiàn)的鎖機(jī)制詳細(xì)介紹
越來(lái)越多的互聯(lián)網(wǎng)企業(yè)面臨著用戶(hù)量膨脹而帶來(lái)的并發(fā)安全問(wèn)題。接下來(lái)通過(guò)本文給大家介紹Java線程并發(fā)中常見(jiàn)的鎖機(jī)制,感興趣的朋友一起看看吧2016-05-05SpringBoot封裝自己的Starter的實(shí)現(xiàn)方法
這篇文章主要介紹了SpringBoot封裝自己的Starter的實(shí)現(xiàn)方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-04-04SpringSecurityOAuth2 如何自定義token信息
這篇文章主要介紹了SpringSecurityOAuth2 自定義token信息的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06Java鏈表的天然遞歸結(jié)構(gòu)性質(zhì)圖文與實(shí)例分析
這篇文章主要介紹了Java鏈表的天然遞歸結(jié)構(gòu)性質(zhì),結(jié)合圖文與實(shí)例形式分析了java鏈表中遞歸操作的原理、實(shí)現(xiàn)技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2020-03-03spring boot里增加表單驗(yàn)證hibernate-validator并在freemarker模板里顯示錯(cuò)誤信息(推
這篇文章主要介紹了spring boot里增加表單驗(yàn)證hibernate-validator并在freemarker模板里顯示錯(cuò)誤信息的相關(guān)資料,需要的朋友可以參考下2018-01-01idea沒(méi)有services窗口、沒(méi)有springboot啟動(dòng)項(xiàng)問(wèn)題
這篇文章主要介紹了idea沒(méi)有services窗口、沒(méi)有springboot啟動(dòng)項(xiàng)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05