If i have this synchronized code which i want to replace with actors with no synchronization, how?
public synchronized int incrementAndGet() {
i = i + 1;
return i;
}
and i have a bunch of users in web site where i need to return each an incrementing number... how can i replace that code with actors code which have no synchronizations thus have no blocking synchronizing code. which i guess would thenn be able to run it on multicores etc (isn't that the purpose of actors?).
A simple actor wrapping i
in its internal state:
case object Inc
class IncrementingActor extends Actor {
var i = 0
protected def receive = {
case Inc =>
i += 1
sender ! i
}
}
And blocking usage (you need to obtain incrementAndGet
somehow):
import akka.pattern.ask
def incrementAndGet() =
Await.result((incrementingActor ? Inc).mapTo[Int], 1 seconds)
This code is: slow, complicated and non-idiomatic. What about AtomicInteger
?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With