2012-07-12 3 views
2

모든 자습서 :스칼라 Akka 배우 행위() 함수는이 같은 일을 읽고

class HelloWorldActor extends Actor { 
    def receive = { 
    case "Hello" => self.reply("World") 
    } 
} 

val myActor = system.actorOf(Props[MyActor], name = "myactor") 

을 AKKA이 같은 Actor 클래스 내부의 행위() 함수를 지원하는 경우 궁금 오전 :

class HelloWorldActor extends Actor { 
    def act() = { 

    } 
} 

그리고 당신이 호출 할 수는 :

val myActor = new HelloWorldActor 
myActor.start() 

나는 배우가 어떤 메시지를 receieving되지 않기 때문에이 작업을 수행 할 수. 그것은 단지 독자적으로 작동합니다. 그래서 내 AKKA 배우 안에서 act() 함수를 사용할 수 있습니까?

+3

메시지가 수신되지 않는 경우 배우가 반응하는 내용은 무엇입니까? 아마도 필요한 것은 [미래] (http://doc.akka.io/docs/akka/2.0.1/scala/futures.html)입니까? – Debilski

답변

6

Akka에서는 배우를 시스템을 사용하여 생성 한 후 자동으로 시작해야합니다. 그러나 마치 자바에서 알 수있는 평범한 스레드처럼 액터를 사용하려는 것처럼 들립니다. 나는 이것이 관용적 인 관점에서 올바른 방법이 아니라고 말할 것이다. 물론 액터에 시작 메시지를 추가하고 생성 후 액터로 보내고 처리기에서 처리 할 수 ​​있습니다. 하지만 메시지에 반응하고 싶지 않다면 액터 대신 일반 스레드 나 미래를 사용하는 것이 좋습니다.

+0

일반 스레드 또는 미래를 어떻게 사용합니까? 선물 기능이 있습니까? 나는이 튜토리얼을 읽은 후에 미래를 어떻게 사용하는지 명확하지 않다. – user1491739

+1

일반 스레드의 경우 Java Thread 클래스를 확장하고'run()'메소드를 구현하십시오. 거기에 많은 예제가 있습니다. 미래를 위해, @Debilski는 이미 당신의 사용법을 설명하는 기사로 연결 시켰습니다. "직접 사용"섹션을보십시오. 두 가지 해결책이 모두 사용자의 문제에 맞지 않으면 자세히 설명해야합니다. –

관련 문제