You forgot to tell us, what happend when you ran the program.
Disclaimer: I havn't tested the program.
Your three caller objects gets initialized, and as you can see in their
They start themselves as threads, and their run method gets called which
calls the callme object's call method, which prints "[message]" unless
it gets interupted by another thread