There is a race condition with messaging. Basically the BasicQueue class is not exactly thread safe. I've outlined the problem in a bug report -
[ 745527 ] race condition with BasicQueue
I've also added a fix that remedies the issue and increases performance on my system by 30 - 40 percent
I see that this bug has been closed and it's true that the latest code has the change but you over-killing with synchronization. Just synchronize on the method and you'll get much better performance. Not to mention you will reduce the complexity of the code (KISS)