欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

好程序員大數(shù)據(jù)學習路線分享Actor學習筆記

 好程序員大數(shù)據(jù)學習路線分享Actor學習筆記,在scala中她能實現(xiàn)很強大的功能,他是基于并發(fā)機制的一個事件模型

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設,佳木斯企業(yè)網(wǎng)站建設,佳木斯品牌網(wǎng)站建設,網(wǎng)站定制,佳木斯網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,佳木斯網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

我們現(xiàn)在學的scala2.10.x版本就是之前的Actor

?

同步:在主程序上排隊執(zhí)行的任務,只有前一個任務執(zhí)行完畢后,才能執(zhí)行下一個任務

異步:指不進入主程序,而進入"任務對列"的任務,只有等主程序任務執(zhí)行完畢,"任務對列"開始請求主程序,請求任務執(zhí)行,該任務會進入主程序

?

java

共享變量 -- 加鎖

會出現(xiàn)鎖死問題

scala

Actor不共享數(shù)據(jù)

沒有鎖的概念

Actor通信之間需要message(通信)

Aactor執(zhí)行順序

1.首先調用start()方法啟動Actor

2.調用start()方法后act()方法會被執(zhí)行

3.Actor之間進行發(fā)送消息

Actor發(fā)送消息的三種方式

! -> 發(fā)送異步消息,沒有返回值

!? -> 發(fā)送同步消息,有返回值,會有線程等待

!! -> 發(fā)送異步消息,有返回值,返回值類型Future[Any](用來獲取異步操作結果)

?

Actor并行執(zhí)行

//注意,這兩個actor會并行執(zhí)行,當其中一個for循環(huán)結束后,actor結束

object ActorDemo01 {

??def main(args: Array[String]): Unit = {

????MyActor1.start()

????MyActor2.start()

??}

}

?

object MyActor1 extends Actor{

??override def act(): Unit = {

????for (i <- 1 to 10){

??????println(s"actor => $i")

??????Thread.sleep(2000)

????}

??}

?

??object MyActor2 extends Actor{

????override def act(): Unit = {

??????for (i <- 1 to 5){

????????println(s"actor2 => $i")

????????Thread.sleep(2000)

??????}

????}

??}

}

用Actor不斷接受消息

執(zhí)行第一種方式,異步

object ActorDemo02 {

??def main(args: Array[String]): Unit = {

????val actor: MyActor = new MyActor

????actor.start()

?

????//并行執(zhí)行

????actor ! "start" ?// !->異步

????actor ! "stop"

????println("發(fā)送完成")

?

??}

}

?

class MyActor extends Actor{

??override def act(): Unit = {

????while (true){ ??//死循環(huán)

??????receive { ??//接收

????????case "start" => {

??????????println("starting")

??????????Thread.sleep(1000)

??????????println("started")

????????}

????????case "stop" => {

??????????println("stopping")

??????????Thread.sleep(1000)

??????????println("stopped")

????????}

??????}

????}

??}

}

第二種方式:利用react來代替receive,也就是說react線程可復用,比receive更高效

object ActorDemo03 {

??def main(args: Array[String]): Unit = {

????val actor: MyActor3 = new MyActor3

????actor.start()

????actor ! "start"

????actor ! "stop"

????println("成功了")

??}

}

?

class MyActor3 extends Actor{

??override def act(): Unit = {

????loop {

??????react{

????????case "start" =>{

??????????println("starting")

??????????Thread.sleep(1000)

??????????println("sarted")

????????}

????????case "stop" =>{

??????????println("stoppting")

??????????Thread.sleep(1000)

??????????println("stopped")

????????}

??????}

????}

??}

}

結合樣例類練習Actor發(fā)送消息

//創(chuàng)建樣例類

case class AsyncMsg(id: Int, msg: String)

case class SyncMsg(id: Int, msg: String)

case class ReplyMsg(id: Int, msg: String)

?

object ActorDemo01 extends Actor {

??override def act(): Unit = {

????while (true) {

??????receive {

????????case "start" => println("starting...")

????????case AsyncMsg(id, msg) =>

????????{

??????????println(s"id:$id,msg:$msg")

??????????sender ! ReplyMsg(1,"sucess") ?//接收到消息后返回響應消息

????????}

????????case SyncMsg(id,msg) => {

??????????println(s"id:$id,msg:$msg")

??????????sender ! ReplyMsg(2,"sucess")

????????}

??????}

????}

??}

}

?

object ActorTest{

??def main(args: Array[String]): Unit = {

?

????val actor: Actor = ActorDemo01.start()

?

// ???//異步發(fā)送消息,沒有返回值

// ???actor ! AsyncMsg(3,"heihei")

// ???println("異步消息發(fā)送完成,沒有返回值")

?

// ???//同步發(fā)送消息,有返回值

// ???val text: Any = actor !? SyncMsg(4,"OK")

// ???println(text)

// ???println("同步消息發(fā)送成功")

?

????//異步發(fā)送消息,有返回值,返回類型為Future[Any]

????val reply: Future[Any] = actor !! SyncMsg(5,"OK is 不存在的")

????Thread.sleep(2000)

????if (reply.isSet){

??????val applyMsg: Any = reply.apply()

??????println(applyMsg)

????}else{

??????println("Nothing")

????}

??}

}

Actor并行化的wordcount

class Task extends Actor {

?

??override def act(): Unit = {

????loop {

??????react {

????????case SubmitTask(fileName) => {

??????????val contents = Source.fromFile(new File(fileName)).mkString

??????????val arr = contents.split("\r\n")

??????????val result = arr.flatMap(_.split(" ")).map((_, 1)).groupBy(_._1).mapValues(_.length)

??????????//val result = arr.flatMap(_.split(" ")).map((_, 1)).groupBy(_._1).mapValues(_.foldLeft(0)(_ + _._2))

??????????sender ! ResultTask(result)

????????}

????????case StopTask => {

??????????exit()

????????}

??????}

????}

??}

}

?

object WorkCount {

??def main(args: Array[String]) {

????val files = Array("c://words.txt", "c://words.log")

?

????val replaySet = new mutable.HashSet[Future[Any]]

????val resultList = new mutable.ListBuffer[ResultTask]

?

????for(f <- files) {

??????val t = new Task

??????val replay = t.start() !! SubmitTask(f)

??????replaySet += replay

????}

?

????while(replaySet.size > 0){

??????val toCumpute = replaySet.filter(_.isSet)

??????for(r <- toCumpute){

????????val result = r.apply()

????????resultList += result.asInstanceOf[ResultTask]

????????replaySet.remove(r)

??????}

??????Thread.sleep(100)

????}

????val finalResult = resultList.map(_.result).flatten.groupBy(_._1).mapValues(x => x.foldLeft(0)(_ + _._2))

????println(finalResult)

??}

}

?

case class SubmitTask(fileName: String)

case object StopTask

case class ResultTask(result: Map[String, Int])

?

網(wǎng)頁題目:好程序員大數(shù)據(jù)學習路線分享Actor學習筆記
當前網(wǎng)址:http://aaarwkj.com/article38/pcdesp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供標簽優(yōu)化、手機網(wǎng)站建設、App開發(fā)、小程序開發(fā)、微信公眾號、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網(wǎng)站建設
蜜臀av中文字幕在线| 国产精品天天影视久久| 日本黄色录像在线观看| 中文字幕乱码熟女人妻视频| 日韩欧美一二区久久麻豆| 亚洲精品主播一区二区三区| 国产极品嫩模91精品| 久久精品国产精品亚洲片| 国内极品尤物视频在线| 亚洲国产日韩一区二区在线| 日本少妇人妻一区二区| 成人粉嫩av一区二区白浆| 欧美日韩视频一区二区| 亚洲天堂欧美日韩一区| 最新日韩av一区二区| 亚洲精品一二三区免费| 91精品国产综合久久麻豆| 麻豆成人三级电影在线| 亚洲国产欧美在线人成人| 国产超碰久久久久久精品| 亚洲中文字幕一二区日韩| 精品国产伦一区二区三区在线| 国产精品美女露脸av毛片| 成年人三级黄色片视频| 欧美精品久久在线观看| 精品一区中文字幕少妇人妻| 欧美日韩精品一区二区在线| 欧洲精品久久久久久| 四虎最新地址在线观看| 欧美另类亚洲日本一区二区| 亚洲欧洲日韩综合另类| 超碰91人人草人人干| 亚洲av乱码一区二区三| 日产极品一区二区三区| 尤物视频在线观看羞羞| 久久av少妇亚洲精品| 日本加勒比在线播放一区| 白白色成人在线免费视频 | 午夜免费福利视频一区| 精品国产精品中文字幕| 人妻在线中文字幕一区|