Я играю с удаленными актерами, но сталкиваюсь с некоторыми трудностями.
Рассмотрим этот сервер:
object Server {
def main(args: Array[String]) {
val server = new Server
server.start
}
}
class Server extends Actor {
RemoteActor.alive(12345)
RemoteActor.register('server, this)
def act() {
while(true) {
receive { case x => println(x) }
}
}
}
Я написал простой клиент:
object Client {
def main(args: Array[String]) {
val server = RemoteActor.select(Node("localhost", 12345), 'server)
server ! "Hey!"
}
}
Как и ожидалось, сервер печатает «Привет!».
Однако неожиданно клиентское приложение никогда не завершает работу!
Похоже, что в клиентском приложении было запущено много потоков, но они продолжают работать после завершения моей основной функции!
Что я могу сделать, чтобы закрыть клиентское приложение? И еще: что, если я хочу, чтобы мой клиент мог запускать и останавливать соединения? Как мне этого добиться?
Некоторая дополнительная информация (на основе ответов): я использую scala 2.8.0.final, и здесь я говорю о автономном сервере и автономном клиенте. Они должны быть запущены как $ scala Server
и $ scala Client
. Я хочу, чтобы приложение «Клиент» завершилось, но этого никогда не произойдет.
Спасибо!