scala的Actor持續接收訊息

2021-10-02 21:00:24 字數 1295 閱讀 2968

持續接收訊息

通過上乙個案例,actorreceiver呼叫receive來接收訊息,但接收一次後,actor就退出了。

object actorsender extends actor 

}object actorreceiver extends actor

}object actormsgdemo

}

上述**,actorreceiver無法接收到actorsender傳送的第二條訊息。

我們希望actorreceiver能夠一直接收訊息,怎麼實現呢?

——我們只需要使用乙個while(true)迴圈,不停地呼叫receive來接收訊息就可以啦。

示例

示例說明

在上乙個案例的基礎上,讓actorreceiver能夠一直接收訊息

結果:

使用loop和react優化接收訊息

上述**,使用while迴圈來不斷接收訊息。

如果當前actor沒有接收到訊息,執行緒就會處於阻塞狀態

如果有很多的actor,就有可能會導致很多執行緒都是處於阻塞狀態

每次有新的訊息來時,重新建立執行緒來處理

頻繁的執行緒建立、銷毀和切換,會影響執行效率

在scala中,可以使用loop + react來復用執行緒。比while + receive更高效

示例

示例說明

使用loop + react重寫上述案例

參考**:

// 持續接收訊息

結果:

scala的actor的學習一

閱讀過一些actor的例子,在學習scala的actor 一,開發乙個scala檔案,另存actor1.scala檔案到指定的資料夾下,d temp import scala.actors.actor.匯入actor中的方法 package com.study.scala act hello sca...

Scala併發程式設計Demo(擴充套件Actor)

package com.zzk1 import scala.actors.actor atl enter導包 ctrl i 實現抽象方法 class actordemo extends actor case stop object test 第一步 建立actor例項 第二步 使用start啟動ac...

使用scala的actor模型實現併發的例子

created by lengmengwuxie on 2016 7 29.import scala.actors.import scala.actors.actor.設計方式 1,任何模擬物件在所有其他模擬物件完成對時間n的處理之前,都不應該處理時間n 1的事件 2,假設要實現所有模擬物件同步執行...