From experience, this smells like a race condition.
And I have found the error! And you are right! It is really race condition. The problem was that I had not one receiveTimeout() but 3 receiveTimeout() for each thread. I don't know how I expect that each send must go to his own receiveTimeout, but of course it was false.
Big thanks to all!