using blocking queue instead of syncronized methods