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

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

举个例子

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结束后,再执行么~


请明白什么是多线程

【热门文章】
【热门文章】