Nope.
Even you are running two threads asynchronously (I don't know if you are here), inside each thread the commands are executed in order.
So, your thread() would print "tread finished processing" first, then put data in result queue. Only then will your main() get the message and print the "main got result".