00:00
那下面呢,我们来一个快速入门案例来写一段,那么来一个actor actor的模型快速入门,我们先说需求是什么?请编写一个actor。比如c hello actor,那么这个c hello actor呢,可以给自己发送一个消息,如图,比如说我发一个哈,然后呢,他自己给我回一个哈喽兔,我发一个OK呢,他回一个OK two。如果我。我写一个这个这个退出发一个exist,那么他就退出这个系统,这就是我们一个最简单的案例。那么这里有个要求,用这个方式来构建项目。啊,为什么用呢?因为用它可以很好的解决项目开发包的依赖关系,我们在进行阿卡开发的时候呢,我们需要下载阿阿卡的一个开发包。那如果说你要自己去下载很麻烦,而且阿卡有一个最最大的问题,就是它这个scan的版本,就是scan这个版本和这个阿卡呢,它有对应关系。
01:07
换言之,就是说如果你的SC是一个版本。和这个阿卡他这个对应不上,你无法做开发。你我所以说这个时候呢,用main是最好的一个方式,好这是我们的一个需求,那需求有了过后呢,我画了一个示意图,帮助我们理解,好现在待会我要写代码,是这样子的A。A actor a有一个。他的refer,然后呢,到时间我通过他。我这个a actor发一个消息到我的mailbox,相当于自己相当于这种感觉啊,说a actor拿到a actor引用我发消息。发到这个dispa measure dispa把消息转发给我这个actor里面的一个mailbox,这个mailbox呢,会把消息推送给我们这个a act里面的receive方法他就拿到了。这个给自己这个发消息呢,同时也会启动我们这个运行。
02:02
好,既然如此,下面呢,我们就来看一段代码,好,我们来一起写一下这个代码,按照这个流程来写一下这个代码,首先呢。我在这里。写一写一个。包。好,叫阿卡。阿卡。然后呢,我们在这里写我们的第一个案例,就是actor自己跟自己通讯,好,我现在呢先写第一个。啊。Test。我这建一个包啊,我这里建一个包。这个包呢,我们就叫actor。To actor就是自己,呃,跟自己相互通讯,呃,就就actor吧,就写一个actor,大家就知道什么意思了。好,那么有这个艾过后呢,我在里面建一个文件,建一个文件,哦,对不起,还不能这样干,这个地方我们有一个最大的问题啊,因为我要建新的项目,所以说我只能不在这建了,我新建一个同学们。
03:05
啊,现在呢,我们来新建这个项目,那新建这个项目,它它有一个流程啊,它有一个流程,首先呢,我这个流程,我这已经有一个文档了,我把它打开给他看一下。嗯,建这个c hello actor,我们用微呢,它的大体的流程是这样子的,所以说我一步一步给他演示啊,首先我们新建一个项目。叫projection。Project,然后呢?然后稍等片刻。他现在进行一个加载哈,进行一个加载,好同学们加载上了,嗯,因为我这里面呢,已经把这个图说的很清晰了,所以说我这里就不再截截图了啊妹们,然后点下一步。我们新建一个项目。Com点艾特硅谷,点Java,假如说现在呢,我们先写阿卡吧,阿卡。
04:04
我们这个班呢是零七。二五班是吧。零五班,0705班好,这里面呢,我建一个这个东西,我们就直接叫做这个啊叫做阿卡。啊叫阿卡,然后呢,0705。好,现在呢,下一步啊,下一步,下一步过后呢,这一步我们不用去管它,直接分。好,这个时他问你要不要切换,我就直接切换一下。切换完了过后,同学们可以看到现在我们这一头呢,就生成了它的一个插门文件,这里面就是我们一个配置文件。那配置文件完了后呢,下面我们要加入些。没的一个信息,也就是说要把我们这个项目需要什么东西给它放进去,那这里面呢,内容特别多,这边有一个模板,这也是一个通用的模板。
05:03
啊,通用模板干什么呢?我先把它拿过来给他看一下啊,我复制一下这个模板的代码,然后呢,我在这里放进去,放进去我做一个解释。好,同学们不要着急,我一点点解释啊,同学们看,这里面我定义了一个常量。啊,这边是字符,包括我看的版本是这个版本,我的阿卡的版本是2.4.17的版本。好的,那么下面这有一系一系列的依赖关系,加入了斯康的依赖,阿卡依赖,包括多进程之间的这个阿克应用,这个呢是一种固定的配方。好,同学们看到这里看到这里呢,你看下面指定源码包编译的插件都是一个固定的写法,写完了以后,写完了以后呢,同学们看到这有两个。这个错误提示,大家看到这有两个错误提示,一个是这个红色的,为什么呢?因为目前我这个项目里边没有在main里面建一个scan。
06:12
所以说我要打开源码包,找到这个命,我新建一个。目录叫scan。好点完这个开了以后呢,我们这边来给他。这就没错了,然后给它标记成一个source root,好,我们再在这个test里面呢,我们再建一个scan。啊开那好,当我一枪键过后呢,这边也就没有错误了,也把它标记为一个这个。Source root,好,这样做完以后,同学们大家看到这里面有个信息叫做ma project,看这里project needs to,这个imported就是我们需要引入东西,那这个时候呢,同学们要注意细节了啊。
07:03
你们前面那个项目是不是也是用微做的呀。好,那这个我就不多说了,我就直接import。这个import呢,因为我以前已经引过了,所以这个速度很快,现在基本上已经就引完了,因为我已经引过一次了,这个包呢,在本地已经下载过来了,如果你们第一次注意,你们要写出第一个项目的话,我估计是需要一点时间的。为什么呢?因为这一系列东西都要需要下载。都需要下载。因为你们。想你们想你们第一次做这个项目的时候,把那个配完了过后,是不是那个包也下载了好久啊。是吧,所以说到时间大概每个同学下载呢,是需要十分钟到20分钟不等。不等。而且这里面有个细节我要多说一句,大家看我这有个细节,有可能你下载不了,我这说了一个细节啊,注意。当修改这个过后,第一次速度会比较慢,因为ma呢需要这个resolve包的依赖,需要下载相关包,但是有些时候你会发现它不动。
08:11
他不动你知道吗?他不动,这个不动,我给大家说一下技巧啊,如果他没动,需要大家勾选这个me的这个always update snap source及这个选项。如果你不做一个,你会发现你开发不了。SY找到这个在哪里呢?是不是在?那个地方。Build里面,Build在哪去了?上边build。好,是不是在这个build tools里面啊,没问题,好你把这个勾选上,勾选上过后它就会开始下载了,有些时候它你不勾选,它不动,它不动,而且还更可怕的是,当你当他整个这个,当他整个都解决依赖过后,你可能发现还是做不了阿卡开发怎么办呢?这个时候简单的很,就是你重新启一下idea就可以了。
09:07
啊,这个地方也也是经常会出这个问题,这个这个工具呢,有时候会出现小问题,大家这样去解决就可以了,好有了这个基本的东西以后,同学们此时此刻你就已经可以去做阿卡开发了,因为这里面呢已经把看了也引进去了。这里面已经隐,所以说你看在这里,如果我再去加一个框架,开了框架,你发现没有这个选项。没有SC这个选项,因为我那个麦里面已经把这个SC包引进去了,所以说你无需再去驾驶这个,开这个包包,好,现在呢,我们快速来写一段代码,来,同学们打开这里我新建。我新建第一个包。Come,点艾特硅谷,点好,我们写一个包,叫阿卡。
10:03
阿卡。这是我们这个包啊,这个包,这个包下面呢,我新建一个包啊,新建一个包就是我们的actor,第一个actor actor通讯AR,好,我们把这个写完啊,各位朋友写完我在这里面建一个类。我在里面建一个类。好,建一个什么类呢?显然是开了这个类C哈。Hello,这个actor。C hello actor点一个。好,同学们,这个就是一个C,那么我们这边相应的写一个object。C hello,这个注意听啊,同学们,这两个的名字可以不一样。千万不要认为说。它是一样的,这个你写个DEMO也是可以的。也就这个才是actor,这个是它运行它的,当然你名字保持一样也无所谓,但是千万不要认为它是actor啊,那那第一次啊,我还是给大家这个写的清晰一点,我把故意分开写,不然的话,初学者很容易认为他们之间有千丝万缕的关系,其实他们没关系,那现在呢,我要继承一个阿卡。
11:16
Actor,好,当我这样一写完功能就会出现一个红色,我们引入包,引入阿卡。引进去,引进去过后,它就是一个做一个说明,说明第一步。当我们。啊,当。当我们继承了,注意听,继承了actor。Aqr后。后干什么呢?就是一个act,需要重写它的一个核心方法,注意它有很多方法可能都需要重启,但是目前有个核心方法,核心方法就是这个receive。这个方法需要重写。
12:00
为什么要重写呢?因为将来你的消息会被推推送到这个位置。就是这个艾对应的mailbox会去调你这个方法,把这个东西给你给你给你推过来,那我就重写他一下。好重写,重写的时候呢,我这个开发工具不知道为什么有时候老老老不好了,同见吗?理论上它应该是个receive啊,你们可以去看一下这个它的底层,其实它返回的是个receive,那么我我说一下这个receive是什么?这里我们看一下说明。这个方法里面有个receive方法,这个方法是干什么的呢?Receive。这个方法。方法注意听方法会被会被谁调用呢?好,它会被该actor,该actor的那个mailbox,这个mailbox是隐藏起来的mailbox调用。
13:03
啊,调用mabox,它是这个mabox是实现了runable的一个接口的。Re,接口的。啊,接口的它会被这个调用啊,调用什么时候调用呢?就是当mailbox接收到消息时,它就会调用你这个receive方法啊当什么时候呢?当。当这个这个actor的mailbox,注意啊,每个actor都有一个邮箱。当该actor接收到。接收。接收到消息时。那这个消息是谁给他发过来呢?就是那个dispat那个那个dispat messages那个消息分发器给他发过来的,他接到消息过后,他就会干什么呢?就会调用。就会调用我们的这个receive方法,把消息给你推送过来,好好,那这里面呢,这个地方我们再来说第三件事情。
14:01
第三件事就是receive是什么?Receive它是一个偏函数,同学们注意听。所以这你看这个。这个实际上是一个trade啊,Trade是一个特质,它这里面有一个类型。这个这这这个我们以前讲过type,就是它自定义了一个是I里面的receive,我们进到这里面看一眼它是什么玩意儿哦,你看我们知道它是这个东西来,现在呢,我找一个同学说一下,大家还记不记得any和unit的含义?是不是它意味着这样要返回一个偏函数,这个偏函数是接可以接收任意类型的,而且没有返回值的这么一种偏函数,还记不记得我们以前讲过偏函数一个最简单的写法,是不是就是case?记住吧,好,现在呢,我假如接收到了他的一个消息啊,比如说。
15:00
呃,我看看我这设计的这个案例啊,我设计的案例是他给我发一个哈喽,我回一个哈喽,没问题,那就写哈喽。走,我说收到。收到hello,我回应一个hello,兔。哈兔。好的。这就是。再看这个地方,就是一个偏函数。这个大家要理解,它是一个偏函数哦,也就是说如果你匹配到哈,我就执行了,如果不匹配到哈呢,我就不执行,叫它本质是个偏函数。当然还有一个case,如果他给我发了一个这个玩意儿,我就写什么呢?说收到OK,回应一个OK two。对不对,OK,吐没问题。那么还有一个,另外一个呢,就是如果我后面再去处理这个退出啊,如果我什么都收不到。
16:01
我就说出一句话说。说。没有接触到任何东西啊,匹配不到,匹配不到,比如你发的别的信息,我就匹配不到,好这个地方就已经写出了它的一个这个东西,那么这个就是一个偏函数,要理解别人问你这个receive方法,它返回的这个receive receive代表什么意思,你说是偏函数,这就是偏函数的一个简写,我以前讲过,专门讲过这个东西。如果你忘了,你就去看看我们上一次课讲的偏函数是怎么说这个事儿的啊,好,写完以后我们来根据刚才的流程,也就是说目前我已经写到哪个地方呢?我已经把这个写完了。把他的这个这个receive方法写完了。那问题来了,我们怎么去拿得到这个AAC这个aaac这个呢?好,同学们,因为我们的消息不能通过他发,而是通过他去发的。
17:02
这一点理解起来有点困难,因为它底层做了很多包装,那注意听讲,下面呢,我们来写一个案例,我写一个主函数。我写一个主函数,现在第一步,第一步我们做这样一个工作啊,这样子。我先来。定义啊,我先来第一步,注意听讲。先。第一步点啊,先创建,先创建一个a system。XX,那么就是就是专门这是干什么呢?专门用于专门用于创建。哎,它是干什么的,它是用来创建,用于创建这个I的。那首先我要用它来,那怎么做呢?Very的easy啊,System system。走好,这里面呢,我给它取个名字。
18:03
我给它取个名字,那首先我们看看这个,我现在用的是apply的方法,那这个actor system呢,它提供了好些apply方法,我们的V。好,同学们可以看到在这个system里面呢,它是一个什么玩意儿呢?好,我们可以看到它本身是一个object,它提供了好多apply方法,我们看一下啊,从目前来看呢,我们看到有这么。一个方法。诶,这个我重新再找一下啊,再重新找一下定位。好,你看这是一个构造方法,除了这个方法之外呢,还有这个也是一个apply,还有什么呢?还有好些看下,还有这个空的默认的,还有还有这个给一个名字的,还有这种给他配一个X么set up的,还有这个方法,那现在呢,我们用第一个方法就是最简单的,我就写一个叫做IO工厂。
19:01
啊,那我现在给他分配一个变量。好,那么就叫actor actor system这样就可以了,这第一个好,第一个第二步,第二步我们生产一个,或者是创建一个,啊注意听这这呢创建一个。的同时。创建一个A,同时返回actor的及actor。Refer,那有,有些人喜欢叫瑞F,有些人叫actor瑞F,有些叫act refer都可以,那么为什么我说是创建actor的同时返回actor的呢?这句话是很有。很有深意的就是他做了两件事情,第一个创建这个艾尔,因为艾尔你不创建,他不可能空穴来风,第二个呢。Refer呢是用来发消息的,所以它代码是这样写的,Actor点里面有个actor,这个of,那么这个地方我们先看一下,它这里呢,首先穿一个purpose。
20:09
这边有个name name就是你给这个act取的一个名字,理论上来说,Act名字呢,咱们不要重复,就是各自有自己的名字,你别啊,那两个艾克叫同样的名字,就好像我们班对吧,两个人都叫张三,到时不知道谁是谁了,所以呢,我这写个purpose。各位同学,那这个地方目前呢,我用的是什么方法来构建呢?我把这个东西放进去。注意,这里我使用的是C,注意啊,这个中括号里面就代表创建了一个C哈的艾特的实例,但是它是用反射创建的。将来呢,我们也可以用这种方式创建就是六,你如果喜欢,你用这个六的方式也是可以玩的,说老师我必须相信,我用六的方式也可以玩。现在呢,我用的是反思的模式。
21:02
好注意啊,这个地方就是创建,对,那么我给它取个名字,待会我再做说明,我取个名字叫ACTOR01,或者叫就叫这个名字叫c hello actor。关成小写的,然后呢,我们这边需要引一个。对,他就这加进去了,好,我在这做几点说明啊,我把它写完。我也喜欢那取个名字叫say hello。好,我这里面做几个说明,大家不要着急,好我做个说明,不说明到时候大家会麻烦第一点说明。第一个说明呢,首先我们可以看到这句话。这句话的作用,其实它就是创建了创建了一个c hello actor的实例。但是呢,目前他使用的是反射机制啊,目前这个方法目前是使用反射。它使用了反射,底层用了反射机制。
22:02
哦,反射。好,第二个同学们可以看到这句话,这句话呢,同学们看到在这个地方,这个C哈,是你给这个act取的名字。是由程序员指定的。随意。给actor。Actor取名能理解吗?取名注意啊,这个名字不要重复第三句话,就这个地方关键了,就这个东西,就是这个艾对应的。类型是是个类型,我把这个写全。啊,我把它写全,这个是什么呢?这个就是就是谁呢?你可以理解成就是当前这个。这个家伙的一个引用啊,就是它的一个艾的一个引用,那么用它呢就可发消息了,好写完以后我们来执行一下。来,各位同学,现在非常的简单,我就做一个动作,发出消息。
23:04
给谁呢?给C。Actor。发消息。发消息,那么发消息准确的理解是给他的那个什么呢?邮箱。给他的邮箱发消息。这个邮箱被隐藏起来了,那怎么发消息呢?非常的简单,使用他的,注意,我刚才讲过,发消息只能通过refer,而不能通过这个对象本身。那么有些同学、老师,这个实例被谁接管了呢?同学们,这个实例被埃system接管了。挨个system是个很牛的,他把这个全部管理起来,说这个这个对象他也是有用的,那么这个时候要发,他是用的这个符号,直接发送一个消息,比如说我发一个哈喽。就OK了,那这样子一发哈呢,他就会去触发这个行为,那么我们来把这个执行一下,同学们看一下效果,先运行一把。
24:01
看目前能否正常执行好,我们运行起来,我们运行起来,我们看执行的结果能不能看到一个正确的结果回来,好,当我们执行完毕过后,我们发现他返回了一个信息,叫做收到hello回应hello to,诶,同学们应该感觉到非常的可怕,可是什么意思?怎么你这发了一句话,这句话被吊起来,而且我还没调这个方法,感觉很奇怪吧,我们把这个流程再走一遍啊,同学们注意,我把这个流程走一遍,彻底的把这个流程再走一遍啊,注意听这句话首先。首先你在这创建这个ER的时候,这个对象c hello,这个实力已经被创建起来了,只是他被那个艾克system统接管了,所以这句话再说一句话。注意啊,创建的,创建的这个C哈C呃,Hello c hello,艾的这个实力被谁接管了,被我们的IO system接管了。
25:04
接管。他会接管这个东西,那么接管以后呢,好在他这个系统里面就有这个实力了。好,有了这个实例了,注意听这一句话,有了这个实例以后呢,这个refer他也给你返回来了,注意这个refer不是一个真正真真正正的一个实例,他只是跟这个c hello的艾克关联起来而已,没有创建一个新的对象啊,不是说说老师,这个是他只是引用到你可以这样理解,就好比。就好比这是我们一个大的追听,你可以这样理解,我画一次啊。IoTa。ACQ2C4。好,我一步步的画。就好比你刚才这第一句话做了一个什么,就这句话特别的关键,这句话当然很好理解,这个就可以理解成system,你你可以这样理解,就是说相当于我们这有个工厂,已经这这个这个工厂已经被有了啊,你可以理解成就这个东西已经都在他的笼罩之下了。
26:04
然后呢,我们做了这样一个动作,这样一个动作会干什么事情呢?首先会有一个挨个实例被创建,这个肯定是要被创建的啊,你放心好了,也就是说在我们这个底层呢,会有一个。这样的实力。这个实例就是我们的C。Say helloor这个实例。好的,同学们注意,这个实例是个实实在在的一个实例了啊,那么同时呢,他把这个引用,就是同学们看到的这个跟他关联的这个引用也拿到了。它的引用就是刚才同学们看到的这个玩意儿。就是c hello,但是这个引用呢,并不要去理解成是一个全新的东西,它只是跟这个艾关联起来而已。而已,那么此时此刻你又做了一个动作,就是发消息,好,发消息怎么发的呢?各位朋友好,此时此刻要发消息了,他先把这个消息发给了我们这个可爱的dispatch message。
27:12
OK,这个讲一次,后面大家一马平川啊,以后你就说了,韩老师你不不用讲了,我全都明白了,对吧,如果我不不讲清楚以后面呢。是不敢乱用的,你会觉得这怎么回事,不敢乱用啊,这个就是我们消息分发器。分发。分发起干什么呢?他把这个消息直接就他会打包,因为消息它会序列化,它会序列化一定是一个对象啊,他序列化后,他把这个消息,先把这个消息发给了这个家伙。好,我换一个颜色,那消息就就从这跑了啊,就说你你可以理解成这一个消息,Message这个消息就。就通过这个,呃,如果是网络就是网络,如果不是网络,就是对象之间的交流就给他了,给到他过后他干什么呢?诶,他就去看。
28:03
他看诶你你你你你是不是把你你是准备把消息发给谁呀,注意发给谁主要是取决于这句话。你这地方写的是谁,就会把这个消息发给谁。再说一遍啊,你这里写的是谁,就会把这个消息发送到这个refer对应的那个I message,那个mailbox,再说一遍啊,千万不要认为是。理解错了,就这个地方,他一看哦,你是要你是要发给这个c hello actor的那个邮箱,因为你是通过他发的。就他发就表示代表发给他对应的艾克的邮箱,于是他肯定接管了嘛,因为dispa肯定是接管了这个这个实例的,所以说他就会去找到,就会去在底层找到它对应的这个邮箱。谁的邮箱呢?各位同学,就是我们的这个C哈艾特的邮箱。
29:01
迈尔box这个邮箱,注意这个这个邮箱是谁的?是C哈的艾特的,这个邮箱不是别人的邮箱。不是别人的邮箱,是他的邮箱,因为你这是这样发的,于是这个消息呢,就会被先发到这个家伙这来。没问题,那么发到这边过后呢,这个时候他这个这个mailbox呢,它是一个run label的一个玩意儿。同学们在学Java的时候应该学过run label,他是可以一直处于运行运行状态的哦,他发现有消息给他了,那么有消息给他过后,他就把这个消息呢拿到了,他把这个消息拿到过后呢,注意听重要的点来了啊。他要把这个消息推送给他,怎么推送呢?因为你这个实例就在这个mailbox里面,它是持有,它是持有这个C。C哈的这个实力的。它是有这个c hello I的这个实例,好,所以说这个实例里面有个方法,就是跟同学们刚才看到个receive,这个方法就有了。
30:08
这个方法里面这个这个方法呢,就是这样子的,同学们看到这个方法就在这,于是他会去调用他消息拿到过后,他去调用什么呢?这个receive方法。Re IVE这个方法好,当他一定用这个方法,你就可以理解成相当于把这个消息推送给到这个方法这边来,那到此为止你就看到了,这样,因为他一看哦,消息是哈喽这个地方就会被触发,他说哈喽拿到了,流程就是如此这般的。好,所以说你看实际上我们写了什么玩意儿呢?我们其实只写了一个这我们只写了一句话,写了一个重写方法,那么底层这个机制呢,完全是交给我们这个艾模型来进行处理的,好到此结束,那其他的最后再讲一个点,讲完我们休息一小会儿啊,那么哪里呢,就是我再来发一个C。
31:06
啊,我们要讲的东西肯定还有很多啊,对吧,那么c say c hello,如果我发一个OK,同学们大家应该理解,相对说这个地方就发了两个消息给他,那么OK也会被触发,一定是有序的,一定是有序的,就是你不管你发多少,他是有序的一个,所以说你这一定是他先。拿到他后拿到,于是我们再来跑一把。好,同学们可以看到,现在呢,我们又跑起来了,我们又跑起来看,他说收到了,OK,哎,怎么收到,怎么怎么回事,在这我写错了是吧?好,我这没写对啊,不是这个意思啊,是OK,我这没有写对,好,我们再来看一个。哦,我们再来看一个。没有问题,那么我问同学们一个问题,假如我在这输出了一个OK波浪号,是不是相当于匹配到这句话了?他说匹配不到啊,我们看有没有这样的反应呢?
32:05
诶,同学们可以看到执行效果跟我们想的是完全一样的,那最后还有一个麻烦事摆在我们面前,大家看,此时此刻这个程序并没有退出。说老师怎么回事呢?各位同学啊,各位同学,你不要以为你的主函数执行完毕了,因为我刚才讲了一个重要的原则,这个底层的mailbox,它是一个round。OK,那让label你没有去停它,它就一直运行,直到。你听着他。那就好像你有为现场大人一直死循环呐。一直在这等待,那这个时候你怎么来终止或者退出我们整个这个a system呢?好,我们可以写一句话来做这个事情,来我们看研究一下。我们来研究。啊,我们来研究一把一把什么呢,就是如何呀,如何退出这个actor模型,我们叫actor system。
33:05
好,非常的简单啊,同学们,那我这样子,我肯定在这儿退出,我让如果这个人我这样写。Case,如果他给我推出了一个,他发了一个退出任务指令,我就说我就要退出了啊,说接收到接收到E这个指令退出,准备退出这个系统,那这个怎么退出呢?注意同学们,此时此刻呢,我们要用一个count的点到。先注意看这句话点stop stop呢,要传的是一个。哦,它也是通过这个I refer来提供来来做的,那怎么呢,加一个safe就行了,Save就他自己。这个停止完了过后再退出我们整个这个东西啊,那这边有一个什么呢?好,它这里面有一个这个终止指令啊terminal啊,我看看是点。
34:02
啊,我看下面啊,有一个指令,有一个指令。啊叫做我看看是在哪里啊,往下找一下啊找一下。这个指令呃,我看看是怎么写的啊,算一下。我看一下指令退出system啊对,把system再调出来,点system,再点terminal,好,这个这句话是停止,这句话是停止什么呢?停止。这句话是停止,停止当前这个这个actor。啊,Actor refer,你可以理解成停止了我们这个actor这个,呃,邮箱邮箱,那么邮箱退出了,并不代表你整个这个actor是退出,这句话是退出,退出这个actor system。A system。这就相当于把整个这个就推出去了,程序就退出了,那么我们来玩一把,看看有没有达到这个效果,先关闭。
35:03
好,我这里执行一个指令。执行一个指令,就是我给他发一个指令叫。退出。EXI。好,同学们,现在呢,我们来执行一下,请看执行效果。好同学们,你看我执行效果呢就OK了,整个系统完毕,好同学们,那么我花了一些时间把整个第一个案例就讲完了,这个案例呢,虽然说呃本身并不困难,但是对于我们第一次写呢,我还是讲的比较细致一点,好,我们把这个快速入门案例做一个简单的整理和说明,好,刚才我们讲了什么呢?各位朋友好,刚才呢,我们就讲了一个艾特的模型快速入门,并且把它的执行流程我们说了一下,首先。我先提出了我们这个ICU的一个需求。啊,我们这个案例的需求,那具体来说呢,就是这样子给大家设计的标题三。
36:05
二标题三。好,这个地方我写了第一个对。啊,这是第二个,然后这是我们第三个。然后呢,我把这个题这个图也给大家截过来,对吧?好,这是我们的一个编写的示意图。那这个图完了过后呢,我们又给大家写了代码了,但就是下一个呢,就是我用,呃,对,还先做了一个简单的,呃,说明就是我我说了一下这个机制啊,这个就不再多说了,那么直接把代码给同学们拿过来就是对应的代码。啊,代码如下A代码如下,具体来说呢,我的代码是这样子给大家写的啊,就是刚才老师写的这段代码。好,同学们,那这一个我们就先讲到这里,好,现在呢,大家休息十分钟啊,休息十分钟。
我来说两句