Java線程創(chuàng)建靜態(tài)代理模式代碼實(shí)例
一、背景
在通過(guò)Runnable接口創(chuàng)建線程時(shí),啟動(dòng)線程需要借助Thread類,這里就涉及到了靜態(tài)代理模式。

二、實(shí)例
以歌手演出為例,在演出的這個(gè)過(guò)程中,歌手與他的助理他們有一個(gè)共同的目標(biāo)"完成這場(chǎng)演出"。
為啥需要歌手需要有助理呢?
因?yàn)榕e辦好一場(chǎng)演出有很多繁瑣的事情要做,為了讓歌手專心完成"唱歌"這件事,助理就需要在背后幫助歌手做很多事情。
1.助理負(fù)責(zé)幫助歌手做一些輔助工作,例如幫忙宣傳、幫忙計(jì)劃行程、幫忙訂機(jī)票等等。
2.歌手負(fù)責(zé)唱歌這件事情。
三、實(shí)例的代碼體現(xiàn)
1.公共的接口show
歌手與助理為了完成演出,都需要為這場(chǎng)演出做一些事情。

2.歌手類Singer實(shí)現(xiàn)Show接口
歌手要做的事情主要就是唱歌

3.助理類AssistantManager實(shí)現(xiàn)Show接口
助理要幫助歌手做一些輔助的工作

這樣寫助理和歌手好像并沒(méi)有聯(lián)系起來(lái),我們只知道助理和歌手都為了同一場(chǎng)演出做了一些事情。
那這個(gè)助理究竟是服務(wù)哪一位歌手呢?
A.我們?yōu)橹眍愒O(shè)置了一個(gè)成員變量"歌手"
B.為助理類創(chuàng)建了相應(yīng)的構(gòu)造方法
(經(jīng)過(guò)以上兩步,助理類在創(chuàng)建時(shí)就自帶了一個(gè)相應(yīng)的"歌手")
C.在演出所做的事情中,讓助理對(duì)應(yīng)的歌手完成"唱歌"這件事。

在創(chuàng)建助理類對(duì)象時(shí)設(shè)置相應(yīng)的對(duì)象,借助助理類對(duì)象,就可以完成"演出"這整個(gè)過(guò)程。

運(yùn)行代碼:

四、總結(jié)
1.Java中的Thread類實(shí)現(xiàn)了Runable接口
即Thread類相當(dāng)于上文中的"助理"

2.我們寫的類也是實(shí)現(xiàn)了Runnable接口
即我們寫的類相當(dāng)于上文中的"歌手"

3.在實(shí)現(xiàn)了Runnable接口后通過(guò)代理類Thread對(duì)象完成線程的啟動(dòng)
A.在代理類Thread對(duì)象的創(chuàng)建中,聲明了我們所寫的實(shí)際對(duì)象,eg:"myRunnable"。
B.然后由Thread類協(xié)助我們完成這一系列的操作。
C.看似簡(jiǎn)單的start()背后,代理類Thread還幫助我們做了很多事。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java中字符串和byte數(shù)組之間的簡(jiǎn)單轉(zhuǎn)換方法
這篇文章主要給大家介紹了關(guān)于Java中字符串和byte數(shù)組之間的簡(jiǎn)單轉(zhuǎn)換方法,Java中將String類型轉(zhuǎn)換為byte[]類型,可以使用String的getBytes()方法,還有很多其他的辦法,需要的朋友可以參考下2023-08-08
Spring中使用atomikos+druid實(shí)現(xiàn)經(jīng)典分布式事務(wù)的方法
這篇文章主要介紹了Spring中使用atomikos+druid實(shí)現(xiàn)經(jīng)典分布式事務(wù)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-06-06
springboot整合rabbitmq實(shí)現(xiàn)訂單超時(shí)取消案例分析
本文介紹了如何使用SpringBoot和RabbitMQ實(shí)現(xiàn)訂單超時(shí)取消功能,通過(guò)配置TTL隊(duì)列和死信交換機(jī),可以管理訂單的超時(shí)邏輯,實(shí)際應(yīng)用中,可以通過(guò)數(shù)據(jù)庫(kù)標(biāo)記訂單狀態(tài)或手動(dòng)確認(rèn)機(jī)制來(lái)防止訂單被錯(cuò)誤取消2025-01-01
關(guān)于SpringCloud分布式系統(tǒng)中實(shí)現(xiàn)冪等性的幾種方式
這篇文章主要介紹了關(guān)于SpringCloud分布式系統(tǒng)中實(shí)現(xiàn)冪等性的幾種方式,冪等函數(shù),或冪等方法,是指可以使用相同參數(shù)重復(fù)執(zhí)行,并能獲得相同結(jié)果的函數(shù),這些函數(shù)不會(huì)影響系統(tǒng)狀態(tài),也不用擔(dān)心重復(fù)執(zhí)行會(huì)對(duì)系統(tǒng)造成改變,需要的朋友可以參考下2023-10-10
java處理轉(zhuǎn)義字符↑ → ↓ 保存后的展示還原操作
這篇文章主要介紹了java處理轉(zhuǎn)義字符↑ → ↓ 保存后的展示還原操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
Spring基于AspectJ的AOP開(kāi)發(fā)案例解析
這篇文章主要介紹了Spring的基于AspectJ的AOP開(kāi)發(fā),AspectJ是一個(gè)基于Java語(yǔ)言的AOP框架,使用AspectJ需要導(dǎo)入Spring?AOP和AspectJ相關(guān)jar包,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05
在java中判斷兩個(gè)浮點(diǎn)型(float)數(shù)據(jù)是否相等的案例
這篇文章主要介紹了在java中判斷兩個(gè)浮點(diǎn)型(float)數(shù)據(jù)是否相等的案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10

