I know this question has already been asked, but I don't think it ever got a precise answer.
Can Vert.x run multiple instances of the same Verticle on a single Vert.x meaning that a single Verticle can run on multiple event loops ? If it is the case, is each of the event loops running the same handler instance or a separate one, in another words are multiple instances of the same Verticle thread-safe and not sharing any state or can there be concurrency issues ?
According to Vert.x documentation -
Even though a Vertx instance maintains multiple event loops, any particular handler will never be executed concurrently, and in most cases (with the exception of worker verticles) will always be called using the exact same event loop.
It's hard to tell what they mean exactly.
I'm trying to figure out how Actor model and Vert.x compare as far as concurrency and mapping to threads. So far it seems like Vert.x works like Actors where Verticle is a bundle of Actors assigned to a single thread and potentially the only difference is that in Vert.x one bit of code can run concurrently somewhere else (on the same Vert.x) although likely as a separate instance with its own state, while with Actors its strictly prohibited, unless you copy an Actor as a separate class and then it's the same.
Update: It seems like there is a full isolation of state between the instances running on separate event loops as each runs its own instance loaded via a separate classloader in a way that even static variables are not shared.
Here's an interesting thread about it.