2010-07-07 3 views
5

AKA는 일정한 간격으로 작업을 수행합니다.정기적 인 실행을 구현하는 스칼라 고유의 방법이 있습니까?

예를 들어, 특정 디렉토리를 60 초마다 검색하려고한다고 가정 해 봅시다.

Executor pool = Executors.newScheduledThreadPool(10) 
pool.scheduleAtFixedRate(scanner, 0, 60, TimeUnit.SECONDS) 

을하고 잘 작동 :

자바에서 나는 그렇게 같은 ScheduledExecutorService을 사용합니다.

내 프로그램에서 스칼라 액터를 사용해보고 싶습니다만, 액터와 Java Executors를 결합하는 방법이나 그럴 수 있는지 여부에 대해 다소 혼란 스럽습니다.

어쩌면 나는 단순히 액터에게 메시지를 보내는 간단한 주자를 가질 수 있다고 생각한다. N 초 - 그게 의미가 있습니까?

답변

2

나는 어쩌면 나는 단지 배우마다 N 초 메시지를 보낼 것입니다 간단한 주자가있을 것 같아요 - - 말이 돼?

예, 그렇다면 Akka를 배우로 사용하는 것이 좋습니다. API가 간단하고 성능이 뛰어나고 맛있는 것들이 많이 있습니다.

+0

Akka를 사용하는 것에 대해 명확히 알고 있지만 배우가 Scala의 중요한 부분이고 Akka의 API와 구현이 더 나은 경우 스칼라 자체에 통합되지 않는 이유는 무엇입니까? 나는 이것에 대해 지역 사회에서 갈등이 있다고 추측 할 수 있습니다. –

+4

액터 임 플. 스칼라와 함께 제공되는 언어는 실제로 언어의 일부는 아니지만 단지 그런 느낌입니다. Akka는 Actor impl을 대체 할 수 없습니다. 스칼라에는 동일한 API가 없으므로 스칼라와 함께 제공됩니다. 가이 스틸이 말했듯이 : 모든 훌륭한 프레임 워크를 언어에 넣을 수는 없으며 각 사용자가 결정을 내리는 것이 더 낫습니다. Akka는 Scala를 확장 (확장)하는 방법의 완벽한 예이며 Scala는 확장을 위해 만들어졌습니다. 그러나 STM을 스칼라에 적용 할 계획이 있습니다. 당신이 기다리고 싶지 않다면 Akka에서 STM을 사용할 수 있습니다. –

+0

감사합니다 올레, 매우 도움이됩니다. 사실, 기본 구현이 "단지"라이브러리라는 점을 감안할 때, Akka로 대체하지 않는 이유에 대해 더 궁금하게 생각합니까? 나는 찬성론과 반대 의견은 무엇인가? 기본 구현의 일부 전문가가 있어야하며 그렇지 않으면 기본값으로 유지되지 않습니다. –

0

Scala Executor 자체는 자바 대신 사용할 수 있습니다.

제출 된 개체는 java.lang.Runnable 작업을 제출했습니다.
이 인터페이스는 스레드 사용, 스케줄링 등의 세부 정보를 포함하여 각 작업이 어떻게 실행될 것인지에 대한 메커니즘에서 작업 제출을 분리하는 방법을 제공합니다.
명시 적으로 스레드를 작성하는 대신 Executor가 일반적으로 사용됩니다. 예를 들어, 오히려 일련의 작업 각각에 대해 new Thread(new(RunnableTask())).start()를 호출하는 대신 사용할 수 있습니다 :

Executor executor = anExecutor; 
executor.execute(new RunnableTask1()); 
executor.execute(new RunnableTask2()); 
... 
+0

고맙지 만 인터페이스는 마치 인터페이스처럼 보입니다. 나는 공식 스칼라 2.8 API 문서 야간에이 패키지를 찾는 데 어려움을 겪고있다. –

관련 문제