摘要:一定義模式是指每個(gè)一個(gè)線(xiàn)程,可以理解成消息命令或者請(qǐng)求。類(lèi)定義類(lèi)定義執(zhí)行三模式講解模式的角色如下委托人參與者參與者會(huì)對(duì)參與者送出請(qǐng)求。參與者參與者接受來(lái)自的請(qǐng)求,然后建立新的線(xiàn)程處理它。幫助者參與者實(shí)際處理請(qǐng)求的。
一、定義
Thread-Per-Message模式是指每個(gè)message一個(gè)線(xiàn)程,message可以理解成“消息”、“命令”或者“請(qǐng)求”。每一個(gè)message都會(huì)分配一個(gè)線(xiàn)程,由這個(gè)線(xiàn)程執(zhí)行工作,使用Thread-Per-Message Pattern時(shí),“委托消息的一端”與“執(zhí)行消息的一端”回會(huì)是不同的線(xiàn)程。
二、模式案例該案例中,由Host分發(fā)請(qǐng)求,每一個(gè)請(qǐng)求分發(fā)一個(gè)新的線(xiàn)程進(jìn)行處理。
Host類(lèi)定義:
public class Host { private final Helper helper = new Helper(); public void request(final int count, final char c) { System.out.println(" request(" + count + ", " + c + ") BEGIN"); new Thread() { public void run() { helper.handle(count, c); } }.start(); System.out.println(" request(" + count + ", " + c + ") END"); } }
Helper類(lèi)定義:
public class Helper { public void handle(int count, char c) { System.out.println(" handle(" + count + ", " + c + ") BEGIN"); for (int i = 0; i < count; i++) { slowly(); System.out.print(c); } System.out.println(""); System.out.println(" handle(" + count + ", " + c + ") END"); } private void slowly() { try { Thread.sleep(100); } catch (InterruptedException e) { } } }
執(zhí)行:
public class Main { public static void main(String[] args) { System.out.println("main BEGIN"); Host host = new Host(); host.request(10, "A"); host.request(20, "B"); host.request(30, "C"); System.out.println("main END"); } }三、模式講解
Thread-Per-Message模式的角色如下:
Client(委托人)參與者
Client參與者會(huì)對(duì)Host參與者送出請(qǐng)求(Request)。上述案例中,Client參與者就是Main類(lèi)。
Host參與者
Host參與者接受來(lái)自Client的請(qǐng)求,然后建立新的線(xiàn)程處理它。
Helper(幫助者)參與者
Helper實(shí)際處理請(qǐng)求的。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/71512.html
摘要:通道參與者參與者保存請(qǐng)求隊(duì)列,同時(shí)會(huì)預(yù)創(chuàng)建線(xiàn)程。注啟動(dòng)線(xiàn)程是一項(xiàng)繁重的工作,模式預(yù)先創(chuàng)建一批線(xiàn)程,可以重復(fù)使用線(xiàn)程,達(dá)到資源再利用提升性能的目的。 一、定義 Work Thread模式和Thread-Per-Message模式類(lèi)似,Thread-Per-Message每次都創(chuàng)建一個(gè)新的線(xiàn)程處理請(qǐng)求,而Work Thread模式預(yù)先會(huì)創(chuàng)建一個(gè)線(xiàn)程池(Thread Pool),每次從線(xiàn)程...
摘要:一定義模式用來(lái)獲取線(xiàn)程的執(zhí)行結(jié)果。案例中的類(lèi)就是參與者參與者接受請(qǐng)求,然后創(chuàng)建線(xiàn)程進(jìn)行異步處理。參與者會(huì)立即返回以的形式。虛擬數(shù)據(jù)參與者是用來(lái)統(tǒng)一代表參與者與參與者。 一、定義 Future模式用來(lái)獲取線(xiàn)程的執(zhí)行結(jié)果。在Thread-Per-Message模式中,如果調(diào)用一個(gè)線(xiàn)程異步執(zhí)行任務(wù),沒(méi)有辦法獲取到返回值,就像:host.request(10,A);而Future模式送出請(qǐng)求后...
摘要:哪吒社區(qū)技能樹(shù)打卡打卡貼函數(shù)式接口簡(jiǎn)介領(lǐng)域優(yōu)質(zhì)創(chuàng)作者哪吒公眾號(hào)作者架構(gòu)師奮斗者掃描主頁(yè)左側(cè)二維碼,加入群聊,一起學(xué)習(xí)一起進(jìn)步歡迎點(diǎn)贊收藏留言前情提要無(wú)意間聽(tīng)到領(lǐng)導(dǎo)們的談話(huà),現(xiàn)在公司的現(xiàn)狀是碼農(nóng)太多,但能獨(dú)立帶隊(duì)的人太少,簡(jiǎn)而言之,不缺干 ? 哪吒社區(qū)Java技能樹(shù)打卡?【打卡貼 day2...
摘要:因?yàn)樵撛卺尫诺却€(xiàn)程后可以重用,所以稱(chēng)它為循環(huán)的。若在繼續(xù)所有參與線(xiàn)程之前更新共享狀態(tài),此屏障操作很有用。返回要求啟動(dòng)此的參與者數(shù)目。查詢(xún)此屏障是否處于損壞狀態(tài)。將屏障重置為其初始狀態(tài)。 本人郵箱: 歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明網(wǎng)址 http://blog.csdn.net/tianshi_kcogithub: https://github.com/kco1989/kco代碼已經(jīng)全部托管git...
摘要:一名年工作經(jīng)驗(yàn)的程序員應(yīng)該具備的技能,這可能是程序員們比較關(guān)心的內(nèi)容。數(shù)據(jù)結(jié)構(gòu)和算法分析數(shù)據(jù)結(jié)構(gòu)和算法分析,對(duì)于一名程序員來(lái)說(shuō),會(huì)比不會(huì)好而且在工作中能派上用場(chǎng)。 一名3年工作經(jīng)驗(yàn)的Java程序員應(yīng)該具備的技能,這可能是Java程序員們比較關(guān)心的內(nèi)容。我這里要說(shuō)明一下,以下列舉的內(nèi)容不是都要會(huì)的東西—-但是如果你掌握得越多,最終能得到的評(píng)價(jià)、拿到的薪水勢(shì)必也越高。 1、基本語(yǔ)法 這包括...
閱讀 1643·2019-08-30 15:44
閱讀 2567·2019-08-30 11:19
閱讀 394·2019-08-30 11:06
閱讀 1557·2019-08-29 15:27
閱讀 3078·2019-08-29 13:44
閱讀 1622·2019-08-28 18:28
閱讀 2353·2019-08-28 18:17
閱讀 1980·2019-08-26 10:41