8
votes

I currently program in Futures, and I'm rather curious about actors. I'd like to hear from an experienced voice:

  • What are the advantages of actors over futures?
  • When should I use one instead of other?

As far as I've read, actors hold state and futures doesn't, is this the only difference? So if I have true immutability I shouldn't care about actors?

Please enlighten me :-)

1
Java or Scala, but I guess this question would be rather language-agnostic; am I wrong?Thiago
Well, only a very select number of languages have both, most only do one or the other, if at all, and the quality of the implementations varies wildly. I don't think there's a meaningful agnostic response to this.skaffman
Let's say scala actors and java futures, can you provide me some information on the trade-offs?Thiago
I found this post to be very mind clearing when it comes to the relationship between actors and futures (in Scala): chrisstucchio.com/blog/2013/actors_vs_futures.htmlErik Kaplun

1 Answers

9
votes

One important difference is that actors typically have internal state, and therefore theoretically, they are not composable; see this and this blog post for having some issues elaborated. However, in practice, they usually provide a sweet spot between the imperative and the purely functional approach. So if possible, it is recommended to stick to programming with only futures, but if the message-passing model fits your problem domain better, feel free to use actors.