scala中,有什么方法,能够使得主程序在 Actor 执行了 exit 后才继续执行么~?

发布于 2022-09-01 12:17:34 字数 1630 浏览 19 评论 0

举个例子

import scala.actors.Actor
import scala.actors.Actor._

object Main {
    class Pong extends Actor {
        def act() {
            var pongCount = 0
            while (true) {
                receive {
                    case "Ping" =>
                        if (pongCount % 1000 == 0)
                            Console.println("Pong: ping "+pongCount)
                        sender ! "Pong"
                        pongCount = pongCount + 1
                    case "Stop" =>
                        Console.println("Pong: stop")
                        exit()
                }
            }
        }
    }

    class Ping(count: Int, pong: Actor) extends Actor {
        def act() {
            var pingsLeft = count - 1
            pong ! "Ping"
            while (true) {
                receive {
                    case "Pong" =>
                        if (pingsLeft % 1000 == 0)
                            Console.println("Ping: pong")
                        if (pingsLeft > 0) {
                            pong ! "Ping"
                            pingsLeft -= 1
                        } else {
                            Console.println("Ping: stop")
                            pong ! "Stop"
                            exit()
                        }
                }
            }
        }
    }

    def main(args: Array[String]): Unit = {
        val pong = new Pong
        val ping = new Ping(100000, pong)
        ping.start
        pong.start
        println("???")
    }

}

这里的"???"总是在ping和pongexit前就输出了,有什么办法能够使得程序在所有的Actor结束后,再执行么~

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

把人绕傻吧 2022-09-08 12:17:35

请明白什么是多线程

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文