<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          μJavaActorsactor系統(tǒng)的Java實現(xiàn)

          聯(lián)合創(chuàng)作 · 2023-09-29 13:50

          μJavaActors 是 actor 系統(tǒng)的一個簡單的 Java 實現(xiàn)。只有 1,200 行代碼,μJavaActors 雖然很小,但很強大。在下面的練習(xí)中,您將學(xué)習(xí)如何使用 μJavaActors 動態(tài)地創(chuàng)建和管理 actor,將消息傳送給它們。

          μJavaActors 圍繞 3 個核心界面而構(gòu)建:

          • 消息 是在 actor 之間發(fā)送的消息。Message 是 3 個(可選的)值和一些行為的容器:
            • source 是發(fā)送 actor。
            • subject 是定義消息含義的字符串(也稱為命令)。
            • data 是消息的任何參數(shù)數(shù)據(jù);通常是一個映射、列表或數(shù)組。參數(shù)可以是要處理和/或其他 actor 要與之交互的數(shù)據(jù)。
            • subjectMatches() 檢查消息主題是否與字符串或正則表達(dá)式匹配。
            μJavaActors 包的默認(rèn)消息類是 DefaultMessage
          • ActorManager 是一個 actor 管理器。它負(fù)責(zé)向 actor 分配線程(進(jìn)而分配處理器)來處理消息。ActorManager 擁有以下關(guān)鍵行為或特征:
            • createActor() 創(chuàng)建一個 actor 并將它與此管理器相關(guān)聯(lián)。
            • startActor() 啟動一個 actor。
            • detachActor() 停止一個 actor 并將它與此管理器斷開。
            • send()/broadcast() 將一條消息發(fā)送給一個 actor、一組 actor、一個類別中的任何 actor 或所有 actor。
            在大部分程序中,只有一個 ActorManager,但如果您希望管理多個線程和/或 actor 池,也可以有多個 ActorManager。此接口的默認(rèn)實現(xiàn)是 DefaultActorManager。
          • Actor 是一個執(zhí)行單元,一次處理一條消息。Actor 具有以下關(guān)鍵行為或特征:
            • 每個 actor 有一個 name,該名稱在每個 ActorManager 中必須是惟一的。
            • 每個 actor 屬于一個 category;類別是一種向一組 actor 中的一個成員發(fā)送消息的方式。一個 actor 一次只能屬于一個類別。
            • 只要 ActorManager 可以提供一個執(zhí)行 actor 的線程,系統(tǒng)就會調(diào)用 receive()。為了保持最高效率,actor 應(yīng)該迅速處理消息,而不要進(jìn)入漫長的等待狀態(tài)(比如等待人為輸入)。
            • willReceive() 允許 actor 過濾潛在的消息主題。
            • peek() 允許該 actor 和其他 actor 查看是否存在掛起的消息(或許是為了選擇主題)。
            • remove() 允許該 actor 和其他 actor 刪除或取消任何尚未處理的消息。
            • getMessageCount() 允許該 actor 和其他 actor 獲取掛起的消息數(shù)量。
            • getMaxMessageCount() 允許 actor 限制支持的掛起消息數(shù)量;此方法可用于預(yù)防不受控制地發(fā)送。
            大部分程序都有許多 actor,這些 actor 常常具有不同的類型。actor 可在程序啟動時創(chuàng)建或在程序執(zhí)行時創(chuàng)建(和銷毀)。本文中的 actor 包 包含一個名為 AbstractActor 的抽象類,actor 實現(xiàn)基于該類。

          圖 1 顯示了 actor 之間的關(guān)系。每個 actor 可向其他 actor 發(fā)送消息。這些消息保存在一個消息隊列(也稱為郵箱;從概念上講,每個 actor 有一個隊列,當(dāng) ActorManager 看到某個線程可用于處理消息時,就會從隊列中刪除該消息,并將它傳送給在線程下運行的 actor,以便處理該消息。


          圖 1. actor 之間的關(guān)系

          介紹內(nèi)容節(jié)選自 IBM DW

          瀏覽 14
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  伊人天天操天天爱 | 2023AV天堂网 | 日韩成人AV电影在线 | 久久天堂 | 日韩精品三级 |