创建Actor

我们可以通过类(class)或者单例对象(object), 继承Actor特质的方式, 来创建Actor对象.

步骤

  1. 定义class或object继承Actor特质
  2. 重写act方法
  3. 调用Actor的start方法执行Actor

    注意: 每个Actor是并行执行的, 互不干扰.

通过class实现

需求

  1. 创建两个Actor,一个Actor打印1-10,另一个Actor打印11-20
  2. 使用class继承Actor实现.(如果需要在程序中创建多个相同的Actor) ```scala import scala.actors.Actor

//案例:Actor并发编程入门, 通过class创建Actor object ClassDemo01 {

//需求: 创建两个Actor,一个Actor打印1-10,另一个Actor打印11-20 //1. 创建Actor1, 用来打印1~10的数字. class Actor1 extends Actor { override def act(): Unit = for (i <- 1 to 10) println(“actor1: “ + i) }

//2. 创建Actor2, 用来打印11~20的数字. class Actor2 extends Actor { override def act(): Unit = for (i <- 11 to 20) println(“actor2: “ + i) }

def main(args: Array[String]): Unit = { //3. 启动两个Actor. new Actor1().start() new Actor2().start() } }

  1. 效果截图 乱序输出<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/520075/1649897457805-e3d0e7c8-81c7-4e20-ac72-e792f900fd55.png#clientId=u83396222-625a-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=47&id=u843cdec5&margin=%5Bobject%20Object%5D&name=image.png&originHeight=54&originWidth=772&originalType=binary&ratio=1&rotation=0&showTitle=false&size=54035&status=done&style=none&taskId=u7087adac-739b-4e58-9317-1d65a56775b&title=&width=673)
  2. <a name="FIiit"></a>
  3. # object继承Actor创建
  4. (如果在程序中只创建一个Actor)
  5. ```scala
  6. import scala.actors.Actor
  7. object Test02 {
  8. //创建两个Actor,一个Actor打印1-10,另一个Actor打印11-20
  9. object Actor1 extends Actor {
  10. override def act(): Unit = {
  11. for (i <- 1 to 10 ) {
  12. print(i + "\t")
  13. }
  14. }
  15. }
  16. object Actor2 extends Actor {
  17. override def act(): Unit = {
  18. for (i <- 11 to 20 ) {
  19. print(i + "\t")
  20. }
  21. }
  22. }
  23. def main(args: Array[String]): Unit = {
  24. //调用start()方法启动Actor
  25. Actor1.start()
  26. Actor2.start()
  27. }
  28. }

效果截图 正序输出
image.png